Adding Javadoc documentation.
[pingpong.git] / Code / Projects / PacketLevelSignatureExtractor / javadoc / edu / uci / iotproject / trafficreassembly / layer3 / Conversation.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2 <!-- NewPage -->
3 <html lang="en">
4 <head>
5 <!-- Generated by javadoc (1.8.0_191) on Thu Mar 28 11:26:58 PDT 2019 -->
6 <title>Conversation</title>
7 <meta name="date" content="2019-03-28">
8 <link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
9 <script type="text/javascript" src="../../../../../script.js"></script>
10 </head>
11 <body>
12 <script type="text/javascript"><!--
13     try {
14         if (location.href.indexOf('is-external=true') == -1) {
15             parent.document.title="Conversation";
16         }
17     }
18     catch(err) {
19     }
20 //-->
21 var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":9,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10};
22 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
23 var altColor = "altColor";
24 var rowColor = "rowColor";
25 var tableTab = "tableTab";
26 var activeTableTab = "activeTableTab";
27 </script>
28 <noscript>
29 <div>JavaScript is disabled on your browser.</div>
30 </noscript>
31 <!-- ========= START OF TOP NAVBAR ======= -->
32 <div class="topNav"><a name="navbar.top">
33 <!--   -->
34 </a>
35 <div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
36 <a name="navbar.top.firstrow">
37 <!--   -->
38 </a>
39 <ul class="navList" title="Navigation">
40 <li><a href="../../../../../overview-summary.html">Overview</a></li>
41 <li><a href="package-summary.html">Package</a></li>
42 <li class="navBarCell1Rev">Class</li>
43 <li><a href="package-tree.html">Tree</a></li>
44 <li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
45 <li><a href="../../../../../index-files/index-1.html">Index</a></li>
46 <li><a href="../../../../../help-doc.html">Help</a></li>
47 </ul>
48 </div>
49 <div class="subNav">
50 <ul class="navList">
51 <li>Prev&nbsp;Class</li>
52 <li><a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/Conversation.Direction.html" title="enum in edu.uci.iotproject.trafficreassembly.layer3"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
53 </ul>
54 <ul class="navList">
55 <li><a href="../../../../../index.html?edu/uci/iotproject/trafficreassembly/layer3/Conversation.html" target="_top">Frames</a></li>
56 <li><a href="Conversation.html" target="_top">No&nbsp;Frames</a></li>
57 </ul>
58 <ul class="navList" id="allclasses_navbar_top">
59 <li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
60 </ul>
61 <div>
62 <script type="text/javascript"><!--
63   allClassesLink = document.getElementById("allclasses_navbar_top");
64   if(window==top) {
65     allClassesLink.style.display = "block";
66   }
67   else {
68     allClassesLink.style.display = "none";
69   }
70   //-->
71 </script>
72 </div>
73 <div>
74 <ul class="subNavList">
75 <li>Summary:&nbsp;</li>
76 <li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
77 <li>Field&nbsp;|&nbsp;</li>
78 <li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
79 <li><a href="#method.summary">Method</a></li>
80 </ul>
81 <ul class="subNavList">
82 <li>Detail:&nbsp;</li>
83 <li>Field&nbsp;|&nbsp;</li>
84 <li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
85 <li><a href="#method.detail">Method</a></li>
86 </ul>
87 </div>
88 <a name="skip.navbar.top">
89 <!--   -->
90 </a></div>
91 <!-- ========= END OF TOP NAVBAR ========= -->
92 <!-- ======== START OF CLASS DATA ======== -->
93 <div class="header">
94 <div class="subTitle">edu.uci.iotproject.trafficreassembly.layer3</div>
95 <h2 title="Class Conversation" class="title">Class Conversation</h2>
96 </div>
97 <div class="contentContainer">
98 <ul class="inheritance">
99 <li>java.lang.Object</li>
100 <li>
101 <ul class="inheritance">
102 <li>edu.uci.iotproject.trafficreassembly.layer3.Conversation</li>
103 </ul>
104 </li>
105 </ul>
106 <div class="description">
107 <ul class="blockList">
108 <li class="blockList">
109 <hr>
110 <br>
111 <pre>public class <span class="typeNameLabel">Conversation</span>
112 extends java.lang.Object</pre>
113 <div class="block">Models a (TCP) conversation/connection/session/flow (packet's belonging to the same session between a client and a
114  server).
115  Holds a list of <code>PcapPacket</code>s identified as pertaining to the flow. Note that this list is <em>not</em>
116  considered when determining equality of two <code>Conversation</code> instances in order to allow for a
117  <code>Conversation</code> to function as a key in data structures such as <code>Map</code> and <code>Set</code>.
118  See <a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/Conversation.html#equals-java.lang.Object-"><code>equals(Object)</code></a> for the definition of equality.</div>
119 </li>
120 </ul>
121 </div>
122 <div class="summary">
123 <ul class="blockList">
124 <li class="blockList">
125 <!-- ======== NESTED CLASS SUMMARY ======== -->
126 <ul class="blockList">
127 <li class="blockList"><a name="nested.class.summary">
128 <!--   -->
129 </a>
130 <h3>Nested Class Summary</h3>
131 <table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
132 <caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
133 <tr>
134 <th class="colFirst" scope="col">Modifier and Type</th>
135 <th class="colLast" scope="col">Class and Description</th>
136 </tr>
137 <tr class="altColor">
138 <td class="colFirst"><code>static class&nbsp;</code></td>
139 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/Conversation.Direction.html" title="enum in edu.uci.iotproject.trafficreassembly.layer3">Conversation.Direction</a></span></code>
140 <div class="block">Utility enum for expressing the direction of a packet pertaining to this <code>Conversation</code>.</div>
141 </td>
142 </tr>
143 </table>
144 </li>
145 </ul>
146 <!-- ======== CONSTRUCTOR SUMMARY ======== -->
147 <ul class="blockList">
148 <li class="blockList"><a name="constructor.summary">
149 <!--   -->
150 </a>
151 <h3>Constructor Summary</h3>
152 <table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
153 <caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
154 <tr>
155 <th class="colOne" scope="col">Constructor and Description</th>
156 </tr>
157 <tr class="altColor">
158 <td class="colOne"><code><span class="memberNameLink"><a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/Conversation.html#Conversation-java.lang.String-int-java.lang.String-int-">Conversation</a></span>(java.lang.String&nbsp;clientIp,
159             int&nbsp;clientPort,
160             java.lang.String&nbsp;serverIp,
161             int&nbsp;serverPort)</code>
162 <div class="block">Constructs a new <code>Conversation</code>.</div>
163 </td>
164 </tr>
165 </table>
166 </li>
167 </ul>
168 <!-- ========== METHOD SUMMARY =========== -->
169 <ul class="blockList">
170 <li class="blockList"><a name="method.summary">
171 <!--   -->
172 </a>
173 <h3>Method Summary</h3>
174 <table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
175 <caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
176 <tr>
177 <th class="colFirst" scope="col">Modifier and Type</th>
178 <th class="colLast" scope="col">Method and Description</th>
179 </tr>
180 <tr id="i0" class="altColor">
181 <td class="colFirst"><code>void</code></td>
182 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/Conversation.html#addFinPacket-org.pcap4j.core.PcapPacket-">addFinPacket</a></span>(org.pcap4j.core.PcapPacket&nbsp;finPacket)</code>
183 <div class="block">Adds a TCP FIN packet to the list of TCP FIN packets associated with this conversation.</div>
184 </td>
185 </tr>
186 <tr id="i1" class="rowColor">
187 <td class="colFirst"><code>void</code></td>
188 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/Conversation.html#addPacket-org.pcap4j.core.PcapPacket-boolean-">addPacket</a></span>(org.pcap4j.core.PcapPacket&nbsp;packet,
189          boolean&nbsp;ignoreRetransmissions)</code>
190 <div class="block">Add a packet to the list of packets associated with this conversation.</div>
191 </td>
192 </tr>
193 <tr id="i2" class="altColor">
194 <td class="colFirst"><code>void</code></td>
195 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/Conversation.html#addRstPacket-org.pcap4j.core.PcapPacket-">addRstPacket</a></span>(org.pcap4j.core.PcapPacket&nbsp;packet)</code>
196 <div class="block">Add a TCP segment for which the RST flag is set to this <code>Conversation</code>.</div>
197 </td>
198 </tr>
199 <tr id="i3" class="rowColor">
200 <td class="colFirst"><code>boolean</code></td>
201 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/Conversation.html#addSynPacket-org.pcap4j.core.PcapPacket-">addSynPacket</a></span>(org.pcap4j.core.PcapPacket&nbsp;synPacket)</code>
202 <div class="block">Records a TCP SYN packet as pertaining to this conversation (adds it to the the internal list).</div>
203 </td>
204 </tr>
205 <tr id="i4" class="altColor">
206 <td class="colFirst"><code>void</code></td>
207 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/Conversation.html#attemptAcknowledgementOfFin-org.pcap4j.core.PcapPacket-">attemptAcknowledgementOfFin</a></span>(org.pcap4j.core.PcapPacket&nbsp;ackPacket)</code>
208 <div class="block">Attempt to ACK any FIN packets held by this conversation.</div>
209 </td>
210 </tr>
211 <tr id="i5" class="rowColor">
212 <td class="colFirst"><code>boolean</code></td>
213 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/Conversation.html#equals-java.lang.Object-">equals</a></span>(java.lang.Object&nbsp;obj)</code>
214 <div class="block"><em>Note:</em> currently, equality is determined based on pairwise equality of the elements of the four tuple
215  (<a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/Conversation.html#mClientIp"><code>mClientIp</code></a>, <a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/Conversation.html#mClientPort"><code>mClientPort</code></a>, <a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/Conversation.html#mServerIp"><code>mServerIp</code></a>, <a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/Conversation.html#mServerPort"><code>mServerPort</code></a>) for <code>this</code> and
216  <code>obj</code>.</div>
217 </td>
218 </tr>
219 <tr id="i6" class="altColor">
220 <td class="colFirst"><code>static <a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/Conversation.html" title="class in edu.uci.iotproject.trafficreassembly.layer3">Conversation</a></code></td>
221 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/Conversation.html#fromPcapPacket-org.pcap4j.core.PcapPacket-boolean-">fromPcapPacket</a></span>(org.pcap4j.core.PcapPacket&nbsp;pcapPacket,
222               boolean&nbsp;clientIsSrc)</code>
223 <div class="block">Factory method for creating a <code>Conversation</code> from a <code>PcapPacket</code>.</div>
224 </td>
225 </tr>
226 <tr id="i7" class="rowColor">
227 <td class="colFirst"><code><a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/Conversation.Direction.html" title="enum in edu.uci.iotproject.trafficreassembly.layer3">Conversation.Direction</a></code></td>
228 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/Conversation.html#getDirection-org.pcap4j.core.PcapPacket-">getDirection</a></span>(org.pcap4j.core.PcapPacket&nbsp;packet)</code>
229 <div class="block">Determine the direction of <code>packet</code>.</div>
230 </td>
231 </tr>
232 <tr id="i8" class="altColor">
233 <td class="colFirst"><code>java.util.List&lt;<a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/FinAckPair.html" title="class in edu.uci.iotproject.trafficreassembly.layer3">FinAckPair</a>&gt;</code></td>
234 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/Conversation.html#getFinAckPairs--">getFinAckPairs</a></span>()</code>
235 <div class="block">Retrieves an unmodifiable view of the list of <a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/FinAckPair.html" title="class in edu.uci.iotproject.trafficreassembly.layer3"><code>FinAckPair</code></a>s associated with this <code>Conversation</code>.</div>
236 </td>
237 </tr>
238 <tr id="i9" class="rowColor">
239 <td class="colFirst"><code>java.util.List&lt;org.pcap4j.core.PcapPacket&gt;</code></td>
240 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/Conversation.html#getPackets--">getPackets</a></span>()</code>
241 <div class="block">Get a list of packets pertaining to this <code>Conversation</code>.</div>
242 </td>
243 </tr>
244 <tr id="i10" class="altColor">
245 <td class="colFirst"><code>java.util.List&lt;org.pcap4j.core.PcapPacket&gt;</code></td>
246 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/Conversation.html#getRstPackets--">getRstPackets</a></span>()</code>
247 <div class="block">Get the TCP segments pertaining to this <code>Conversation</code> for which it was detected that the RST flag is set.</div>
248 </td>
249 </tr>
250 <tr id="i11" class="rowColor">
251 <td class="colFirst"><code>java.util.List&lt;org.pcap4j.core.PcapPacket&gt;</code></td>
252 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/Conversation.html#getSynPackets--">getSynPackets</a></span>()</code>
253 <div class="block">Get a list of SYN packets pertaining to this <code>Conversation</code>.</div>
254 </td>
255 </tr>
256 <tr id="i12" class="altColor">
257 <td class="colFirst"><code>java.util.List&lt;org.pcap4j.core.PcapPacket&gt;</code></td>
258 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/Conversation.html#getTlsApplicationDataPackets--">getTlsApplicationDataPackets</a></span>()</code>
259 <div class="block">If this <code>Conversation</code> is backing a TLS session (i.e., if the value of <a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/Conversation.html#isTls--"><code>isTls()</code></a> is <code>true</code>),
260  get the packets labeled as TLS Application Data packets.</div>
261 </td>
262 </tr>
263 <tr id="i13" class="rowColor">
264 <td class="colFirst"><code>int</code></td>
265 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/Conversation.html#hashCode--">hashCode</a></span>()</code>&nbsp;</td>
266 </tr>
267 <tr id="i14" class="altColor">
268 <td class="colFirst"><code>boolean</code></td>
269 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/Conversation.html#isGracefullyShutdown--">isGracefullyShutdown</a></span>()</code>
270 <div class="block">Get if this <code>Conversation</code> is considered to have been gracefully shut down.</div>
271 </td>
272 </tr>
273 <tr id="i15" class="rowColor">
274 <td class="colFirst"><code>boolean</code></td>
275 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/Conversation.html#isRetransmission-org.pcap4j.core.PcapPacket-">isRetransmission</a></span>(org.pcap4j.core.PcapPacket&nbsp;packet)</code>
276 <div class="block">
277       Determines if the TCP packet contained in <code>packet</code> is a retransmission of a previously seen (logged)
278       packet.</div>
279 </td>
280 </tr>
281 <tr id="i16" class="altColor">
282 <td class="colFirst"><code>boolean</code></td>
283 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/Conversation.html#isTls--">isTls</a></span>()</code>
284 <div class="block">
285      Is this <code>Conversation</code> a TLS session?</div>
286 </td>
287 </tr>
288 <tr id="i17" class="rowColor">
289 <td class="colFirst"><code>java.lang.String</code></td>
290 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/Conversation.html#toString--">toString</a></span>()</code>&nbsp;</td>
291 </tr>
292 </table>
293 <ul class="blockList">
294 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
295 <!--   -->
296 </a>
297 <h3>Methods inherited from class&nbsp;java.lang.Object</h3>
298 <code>getClass, notify, notifyAll, wait, wait, wait</code></li>
299 </ul>
300 </li>
301 </ul>
302 </li>
303 </ul>
304 </div>
305 <div class="details">
306 <ul class="blockList">
307 <li class="blockList">
308 <!-- ========= CONSTRUCTOR DETAIL ======== -->
309 <ul class="blockList">
310 <li class="blockList"><a name="constructor.detail">
311 <!--   -->
312 </a>
313 <h3>Constructor Detail</h3>
314 <a name="Conversation-java.lang.String-int-java.lang.String-int-">
315 <!--   -->
316 </a>
317 <ul class="blockListLast">
318 <li class="blockList">
319 <h4>Conversation</h4>
320 <pre>public&nbsp;Conversation(java.lang.String&nbsp;clientIp,
321                     int&nbsp;clientPort,
322                     java.lang.String&nbsp;serverIp,
323                     int&nbsp;serverPort)</pre>
324 <div class="block">Constructs a new <code>Conversation</code>.</div>
325 <dl>
326 <dt><span class="paramLabel">Parameters:</span></dt>
327 <dd><code>clientIp</code> - The IP of the host that is considered the client (i.e. the host that initiates the conversation)
328                  in the conversation.</dd>
329 <dd><code>clientPort</code> - The port number used by the client for the conversation.</dd>
330 <dd><code>serverIp</code> - The IP of the host that is considered the server (i.e. is the responder) in the conversation.</dd>
331 <dd><code>serverPort</code> - The port number used by the server for the conversation.</dd>
332 </dl>
333 </li>
334 </ul>
335 </li>
336 </ul>
337 <!-- ============ METHOD DETAIL ========== -->
338 <ul class="blockList">
339 <li class="blockList"><a name="method.detail">
340 <!--   -->
341 </a>
342 <h3>Method Detail</h3>
343 <a name="fromPcapPacket-org.pcap4j.core.PcapPacket-boolean-">
344 <!--   -->
345 </a>
346 <ul class="blockList">
347 <li class="blockList">
348 <h4>fromPcapPacket</h4>
349 <pre>public static&nbsp;<a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/Conversation.html" title="class in edu.uci.iotproject.trafficreassembly.layer3">Conversation</a>&nbsp;fromPcapPacket(org.pcap4j.core.PcapPacket&nbsp;pcapPacket,
350                                           boolean&nbsp;clientIsSrc)</pre>
351 <div class="block">Factory method for creating a <code>Conversation</code> from a <code>PcapPacket</code>.</div>
352 <dl>
353 <dt><span class="paramLabel">Parameters:</span></dt>
354 <dd><code>pcapPacket</code> - The <code>PcapPacket</code> that wraps a TCP segment for which a <code>Conversation</code> is to be initiated.</dd>
355 <dd><code>clientIsSrc</code> - If <code>true</code>, the source address and source port found in the IP datagram and TCP segment
356                     wrapped in the <code>PcapPacket</code> are regarded as pertaining to the client, and the destination
357                     address and destination port are regarded as pertaining to the server---and vice versa if set
358                     to <code>false</code>.</dd>
359 <dt><span class="returnLabel">Returns:</span></dt>
360 <dd>A <code>Conversation</code> initiated with ip:port for client and server according to the direction of the packet.</dd>
361 </dl>
362 </li>
363 </ul>
364 <a name="addPacket-org.pcap4j.core.PcapPacket-boolean-">
365 <!--   -->
366 </a>
367 <ul class="blockList">
368 <li class="blockList">
369 <h4>addPacket</h4>
370 <pre>public&nbsp;void&nbsp;addPacket(org.pcap4j.core.PcapPacket&nbsp;packet,
371                       boolean&nbsp;ignoreRetransmissions)</pre>
372 <div class="block">Add a packet to the list of packets associated with this conversation.</div>
373 <dl>
374 <dt><span class="paramLabel">Parameters:</span></dt>
375 <dd><code>packet</code> - The packet that is to be added to (associated with) this conversation.</dd>
376 <dd><code>ignoreRetransmissions</code> - Boolean value indicating if retransmissions should be ignored.
377                               If set to <code>true</code>, <code>packet</code> will <em>not</em> be added to the
378                               internal list of packets pertaining to this <code>Conversation</code>
379                               <em>iff</em> the sequence number of <code>packet</code> was already
380                               seen in a previous packet.</dd>
381 </dl>
382 </li>
383 </ul>
384 <a name="getPackets--">
385 <!--   -->
386 </a>
387 <ul class="blockList">
388 <li class="blockList">
389 <h4>getPackets</h4>
390 <pre>public&nbsp;java.util.List&lt;org.pcap4j.core.PcapPacket&gt;&nbsp;getPackets()</pre>
391 <div class="block">Get a list of packets pertaining to this <code>Conversation</code>.
392  The returned list is a read-only list.</div>
393 <dl>
394 <dt><span class="returnLabel">Returns:</span></dt>
395 <dd>the list of packets pertaining to this <code>Conversation</code>.</dd>
396 </dl>
397 </li>
398 </ul>
399 <a name="addSynPacket-org.pcap4j.core.PcapPacket-">
400 <!--   -->
401 </a>
402 <ul class="blockList">
403 <li class="blockList">
404 <h4>addSynPacket</h4>
405 <pre>public&nbsp;boolean&nbsp;addSynPacket(org.pcap4j.core.PcapPacket&nbsp;synPacket)</pre>
406 <div class="block">Records a TCP SYN packet as pertaining to this conversation (adds it to the the internal list).
407  Attempts to add duplicate SYN packets will be ignored, and the caller is made aware of the attempt to add a
408  duplicate by the return value being <code>false</code>.</div>
409 <dl>
410 <dt><span class="paramLabel">Parameters:</span></dt>
411 <dd><code>synPacket</code> - A <code>PcapPacket</code> wrapping a TCP SYN packet.</dd>
412 <dt><span class="returnLabel">Returns:</span></dt>
413 <dd><code>true</code> if the packet was successfully added to this <code>Conversation</code>, <code>false</code> otherwise.</dd>
414 </dl>
415 </li>
416 </ul>
417 <a name="getSynPackets--">
418 <!--   -->
419 </a>
420 <ul class="blockList">
421 <li class="blockList">
422 <h4>getSynPackets</h4>
423 <pre>public&nbsp;java.util.List&lt;org.pcap4j.core.PcapPacket&gt;&nbsp;getSynPackets()</pre>
424 <div class="block">Get a list of SYN packets pertaining to this <code>Conversation</code>.
425  The returned list is a read-only list.</div>
426 <dl>
427 <dt><span class="returnLabel">Returns:</span></dt>
428 <dd>the list of SYN packets pertaining to this <code>Conversation</code>.</dd>
429 </dl>
430 </li>
431 </ul>
432 <a name="addFinPacket-org.pcap4j.core.PcapPacket-">
433 <!--   -->
434 </a>
435 <ul class="blockList">
436 <li class="blockList">
437 <h4>addFinPacket</h4>
438 <pre>public&nbsp;void&nbsp;addFinPacket(org.pcap4j.core.PcapPacket&nbsp;finPacket)</pre>
439 <div class="block">Adds a TCP FIN packet to the list of TCP FIN packets associated with this conversation.</div>
440 <dl>
441 <dt><span class="paramLabel">Parameters:</span></dt>
442 <dd><code>finPacket</code> - The TCP FIN packet that is to be added to (associated with) this conversation.</dd>
443 </dl>
444 </li>
445 </ul>
446 <a name="attemptAcknowledgementOfFin-org.pcap4j.core.PcapPacket-">
447 <!--   -->
448 </a>
449 <ul class="blockList">
450 <li class="blockList">
451 <h4>attemptAcknowledgementOfFin</h4>
452 <pre>public&nbsp;void&nbsp;attemptAcknowledgementOfFin(org.pcap4j.core.PcapPacket&nbsp;ackPacket)</pre>
453 <div class="block">Attempt to ACK any FIN packets held by this conversation.</div>
454 <dl>
455 <dt><span class="paramLabel">Parameters:</span></dt>
456 <dd><code>ackPacket</code> - The ACK for a FIN previously added to this conversation.</dd>
457 </dl>
458 </li>
459 </ul>
460 <a name="getFinAckPairs--">
461 <!--   -->
462 </a>
463 <ul class="blockList">
464 <li class="blockList">
465 <h4>getFinAckPairs</h4>
466 <pre>public&nbsp;java.util.List&lt;<a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/FinAckPair.html" title="class in edu.uci.iotproject.trafficreassembly.layer3">FinAckPair</a>&gt;&nbsp;getFinAckPairs()</pre>
467 <div class="block">Retrieves an unmodifiable view of the list of <a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/FinAckPair.html" title="class in edu.uci.iotproject.trafficreassembly.layer3"><code>FinAckPair</code></a>s associated with this <code>Conversation</code>.</div>
468 <dl>
469 <dt><span class="returnLabel">Returns:</span></dt>
470 <dd>an unmodifiable view of the list of <a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/FinAckPair.html" title="class in edu.uci.iotproject.trafficreassembly.layer3"><code>FinAckPair</code></a>s associated with this <code>Conversation</code>.</dd>
471 </dl>
472 </li>
473 </ul>
474 <a name="isGracefullyShutdown--">
475 <!--   -->
476 </a>
477 <ul class="blockList">
478 <li class="blockList">
479 <h4>isGracefullyShutdown</h4>
480 <pre>public&nbsp;boolean&nbsp;isGracefullyShutdown()</pre>
481 <div class="block">Get if this <code>Conversation</code> is considered to have been gracefully shut down.
482  A <code>Conversation</code> has been gracefully shut down if it contains a FIN+ACK pair for both directions
483  (client to server, and server to client).</div>
484 <dl>
485 <dt><span class="returnLabel">Returns:</span></dt>
486 <dd><code>true</code> if the connection has been gracefully shut down, false otherwise.</dd>
487 </dl>
488 </li>
489 </ul>
490 <a name="addRstPacket-org.pcap4j.core.PcapPacket-">
491 <!--   -->
492 </a>
493 <ul class="blockList">
494 <li class="blockList">
495 <h4>addRstPacket</h4>
496 <pre>public&nbsp;void&nbsp;addRstPacket(org.pcap4j.core.PcapPacket&nbsp;packet)</pre>
497 <div class="block">Add a TCP segment for which the RST flag is set to this <code>Conversation</code>.</div>
498 <dl>
499 <dt><span class="paramLabel">Parameters:</span></dt>
500 <dd><code>packet</code> - A <code>PcapPacket</code> wrapping a TCP segment pertaining to this <code>Conversation</code> for which the
501                RST flag is set.</dd>
502 </dl>
503 </li>
504 </ul>
505 <a name="getRstPackets--">
506 <!--   -->
507 </a>
508 <ul class="blockList">
509 <li class="blockList">
510 <h4>getRstPackets</h4>
511 <pre>public&nbsp;java.util.List&lt;org.pcap4j.core.PcapPacket&gt;&nbsp;getRstPackets()</pre>
512 <div class="block">Get the TCP segments pertaining to this <code>Conversation</code> for which it was detected that the RST flag is set.</div>
513 <dl>
514 <dt><span class="returnLabel">Returns:</span></dt>
515 <dd>the TCP segments pertaining to this <code>Conversation</code> for which it was detected that the RST flag is
516          set.</dd>
517 </dl>
518 </li>
519 </ul>
520 <a name="equals-java.lang.Object-">
521 <!--   -->
522 </a>
523 <ul class="blockList">
524 <li class="blockList">
525 <h4>equals</h4>
526 <pre>public&nbsp;boolean&nbsp;equals(java.lang.Object&nbsp;obj)</pre>
527 <div class="block"><em>Note:</em> currently, equality is determined based on pairwise equality of the elements of the four tuple
528  (<a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/Conversation.html#mClientIp"><code>mClientIp</code></a>, <a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/Conversation.html#mClientPort"><code>mClientPort</code></a>, <a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/Conversation.html#mServerIp"><code>mServerIp</code></a>, <a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/Conversation.html#mServerPort"><code>mServerPort</code></a>) for <code>this</code> and
529  <code>obj</code>.</div>
530 <dl>
531 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
532 <dd><code>equals</code>&nbsp;in class&nbsp;<code>java.lang.Object</code></dd>
533 <dt><span class="paramLabel">Parameters:</span></dt>
534 <dd><code>obj</code> - The object to test for equality with <code>this</code>.</dd>
535 <dt><span class="returnLabel">Returns:</span></dt>
536 <dd><code>true</code> if <code>obj</code> is considered equal to <code>this</code> based on the definition of equality given above.</dd>
537 </dl>
538 </li>
539 </ul>
540 <a name="hashCode--">
541 <!--   -->
542 </a>
543 <ul class="blockList">
544 <li class="blockList">
545 <h4>hashCode</h4>
546 <pre>public&nbsp;int&nbsp;hashCode()</pre>
547 <dl>
548 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
549 <dd><code>hashCode</code>&nbsp;in class&nbsp;<code>java.lang.Object</code></dd>
550 </dl>
551 </li>
552 </ul>
553 <a name="toString--">
554 <!--   -->
555 </a>
556 <ul class="blockList">
557 <li class="blockList">
558 <h4>toString</h4>
559 <pre>public&nbsp;java.lang.String&nbsp;toString()</pre>
560 <dl>
561 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
562 <dd><code>toString</code>&nbsp;in class&nbsp;<code>java.lang.Object</code></dd>
563 </dl>
564 </li>
565 </ul>
566 <a name="isRetransmission-org.pcap4j.core.PcapPacket-">
567 <!--   -->
568 </a>
569 <ul class="blockList">
570 <li class="blockList">
571 <h4>isRetransmission</h4>
572 <pre>public&nbsp;boolean&nbsp;isRetransmission(org.pcap4j.core.PcapPacket&nbsp;packet)</pre>
573 <div class="block"><p>
574       Determines if the TCP packet contained in <code>packet</code> is a retransmission of a previously seen (logged)
575       packet.
576  </p>
577
578  <b>
579      TODO:
580      the current implementation, which uses a set of previously seen sequence numbers, will consider a segment
581      with a reused sequence number---occurring as a result of sequence number wrap around for a very long-lived
582      connection---as a retransmission (and may therefore end up discarding it even though it is in fact NOT a
583      retransmission). Ideas?
584  </b></div>
585 <dl>
586 <dt><span class="paramLabel">Parameters:</span></dt>
587 <dd><code>packet</code> - The packet.</dd>
588 <dt><span class="returnLabel">Returns:</span></dt>
589 <dd><code>true</code> if <code>packet</code> was determined to be a retransmission, <code>false</code> otherwise.</dd>
590 </dl>
591 </li>
592 </ul>
593 <a name="isTls--">
594 <!--   -->
595 </a>
596 <ul class="blockList">
597 <li class="blockList">
598 <h4>isTls</h4>
599 <pre>public&nbsp;boolean&nbsp;isTls()</pre>
600 <div class="block"><p>
601      Is this <code>Conversation</code> a TLS session?
602  </p>
603
604  <em>Note: the current implementation simply examines the port number(s) for 443; it does <b>not</b> verify if the
605  application data is indeed encrypted.</em></div>
606 <dl>
607 <dt><span class="returnLabel">Returns:</span></dt>
608 <dd><code>true</code> if this <code>Conversation</code> is interpreted as a TLS session, <code>false</code> otherwise.</dd>
609 </dl>
610 </li>
611 </ul>
612 <a name="getTlsApplicationDataPackets--">
613 <!--   -->
614 </a>
615 <ul class="blockList">
616 <li class="blockList">
617 <h4>getTlsApplicationDataPackets</h4>
618 <pre>public&nbsp;java.util.List&lt;org.pcap4j.core.PcapPacket&gt;&nbsp;getTlsApplicationDataPackets()</pre>
619 <div class="block">If this <code>Conversation</code> is backing a TLS session (i.e., if the value of <a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/Conversation.html#isTls--"><code>isTls()</code></a> is <code>true</code>),
620  get the packets labeled as TLS Application Data packets. This is a subset of the full set of payload-carrying
621  packets (as returned by <a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/Conversation.html#getPackets--"><code>getPackets()</code></a>). An exception is thrown if this method is invoked on a
622  <code>Conversation</code> for which <a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/Conversation.html#isTls--"><code>isTls()</code></a> returns <code>false</code>.</div>
623 <dl>
624 <dt><span class="returnLabel">Returns:</span></dt>
625 <dd>A list containing exactly those packets that could be identified as TLS Application Data packets (through
626          inspecting of the SSL record header). The list may be empty, if no TLS application data packets have been
627          recorded for this <code>Conversation</code>.</dd>
628 </dl>
629 </li>
630 </ul>
631 <a name="getDirection-org.pcap4j.core.PcapPacket-">
632 <!--   -->
633 </a>
634 <ul class="blockListLast">
635 <li class="blockList">
636 <h4>getDirection</h4>
637 <pre>public&nbsp;<a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/Conversation.Direction.html" title="enum in edu.uci.iotproject.trafficreassembly.layer3">Conversation.Direction</a>&nbsp;getDirection(org.pcap4j.core.PcapPacket&nbsp;packet)</pre>
638 <div class="block">Determine the direction of <code>packet</code>. An <code>IllegalArgumentException</code> is thrown if <code>packet</code> does
639  not pertain to this conversation.</div>
640 <dl>
641 <dt><span class="paramLabel">Parameters:</span></dt>
642 <dd><code>packet</code> - The packet whose direction is to be determined.</dd>
643 <dt><span class="returnLabel">Returns:</span></dt>
644 <dd>A <a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/Conversation.Direction.html" title="enum in edu.uci.iotproject.trafficreassembly.layer3"><code>Conversation.Direction</code></a> indicating the direction of the packet.</dd>
645 </dl>
646 </li>
647 </ul>
648 </li>
649 </ul>
650 </li>
651 </ul>
652 </div>
653 </div>
654 <!-- ========= END OF CLASS DATA ========= -->
655 <!-- ======= START OF BOTTOM NAVBAR ====== -->
656 <div class="bottomNav"><a name="navbar.bottom">
657 <!--   -->
658 </a>
659 <div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
660 <a name="navbar.bottom.firstrow">
661 <!--   -->
662 </a>
663 <ul class="navList" title="Navigation">
664 <li><a href="../../../../../overview-summary.html">Overview</a></li>
665 <li><a href="package-summary.html">Package</a></li>
666 <li class="navBarCell1Rev">Class</li>
667 <li><a href="package-tree.html">Tree</a></li>
668 <li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
669 <li><a href="../../../../../index-files/index-1.html">Index</a></li>
670 <li><a href="../../../../../help-doc.html">Help</a></li>
671 </ul>
672 </div>
673 <div class="subNav">
674 <ul class="navList">
675 <li>Prev&nbsp;Class</li>
676 <li><a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/Conversation.Direction.html" title="enum in edu.uci.iotproject.trafficreassembly.layer3"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
677 </ul>
678 <ul class="navList">
679 <li><a href="../../../../../index.html?edu/uci/iotproject/trafficreassembly/layer3/Conversation.html" target="_top">Frames</a></li>
680 <li><a href="Conversation.html" target="_top">No&nbsp;Frames</a></li>
681 </ul>
682 <ul class="navList" id="allclasses_navbar_bottom">
683 <li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
684 </ul>
685 <div>
686 <script type="text/javascript"><!--
687   allClassesLink = document.getElementById("allclasses_navbar_bottom");
688   if(window==top) {
689     allClassesLink.style.display = "block";
690   }
691   else {
692     allClassesLink.style.display = "none";
693   }
694   //-->
695 </script>
696 </div>
697 <div>
698 <ul class="subNavList">
699 <li>Summary:&nbsp;</li>
700 <li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
701 <li>Field&nbsp;|&nbsp;</li>
702 <li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
703 <li><a href="#method.summary">Method</a></li>
704 </ul>
705 <ul class="subNavList">
706 <li>Detail:&nbsp;</li>
707 <li>Field&nbsp;|&nbsp;</li>
708 <li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
709 <li><a href="#method.detail">Method</a></li>
710 </ul>
711 </div>
712 <a name="skip.navbar.bottom">
713 <!--   -->
714 </a></div>
715 <!-- ======== END OF BOTTOM NAVBAR ======= -->
716 </body>
717 </html>