1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
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>
12 <script type="text/javascript"><!--
14 if (location.href.indexOf('is-external=true') == -1) {
15 parent.document.title="Conversation";
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";
29 <div>JavaScript is disabled on your browser.</div>
31 <!-- ========= START OF TOP NAVBAR ======= -->
32 <div class="topNav"><a name="navbar.top">
35 <div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
36 <a name="navbar.top.firstrow">
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>
51 <li>Prev 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 Class</span></a></li>
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 Frames</a></li>
58 <ul class="navList" id="allclasses_navbar_top">
59 <li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
62 <script type="text/javascript"><!--
63 allClassesLink = document.getElementById("allclasses_navbar_top");
65 allClassesLink.style.display = "block";
68 allClassesLink.style.display = "none";
74 <ul class="subNavList">
75 <li>Summary: </li>
76 <li><a href="#nested.class.summary">Nested</a> | </li>
77 <li>Field | </li>
78 <li><a href="#constructor.summary">Constr</a> | </li>
79 <li><a href="#method.summary">Method</a></li>
81 <ul class="subNavList">
82 <li>Detail: </li>
83 <li>Field | </li>
84 <li><a href="#constructor.detail">Constr</a> | </li>
85 <li><a href="#method.detail">Method</a></li>
88 <a name="skip.navbar.top">
91 <!-- ========= END OF TOP NAVBAR ========= -->
92 <!-- ======== START OF CLASS DATA ======== -->
94 <div class="subTitle">edu.uci.iotproject.trafficreassembly.layer3</div>
95 <h2 title="Class Conversation" class="title">Class Conversation</h2>
97 <div class="contentContainer">
98 <ul class="inheritance">
99 <li>java.lang.Object</li>
101 <ul class="inheritance">
102 <li>edu.uci.iotproject.trafficreassembly.layer3.Conversation</li>
106 <div class="description">
107 <ul class="blockList">
108 <li class="blockList">
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
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>
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">
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"> </span></caption>
134 <th class="colFirst" scope="col">Modifier and Type</th>
135 <th class="colLast" scope="col">Class and Description</th>
137 <tr class="altColor">
138 <td class="colFirst"><code>static class </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>
146 <!-- ======== CONSTRUCTOR SUMMARY ======== -->
147 <ul class="blockList">
148 <li class="blockList"><a name="constructor.summary">
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"> </span></caption>
155 <th class="colOne" scope="col">Constructor and Description</th>
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 clientIp,
160 java.lang.String serverIp,
161 int serverPort)</code>
162 <div class="block">Constructs a new <code>Conversation</code>.</div>
168 <!-- ========== METHOD SUMMARY =========== -->
169 <ul class="blockList">
170 <li class="blockList"><a name="method.summary">
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"> </span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption>
177 <th class="colFirst" scope="col">Modifier and Type</th>
178 <th class="colLast" scope="col">Method and Description</th>
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 finPacket)</code>
183 <div class="block">Adds a TCP FIN packet to the list of TCP FIN packets associated with this conversation.</div>
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 packet,
189 boolean ignoreRetransmissions)</code>
190 <div class="block">Add a packet to the list of packets associated with this conversation.</div>
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 packet)</code>
196 <div class="block">Add a TCP segment for which the RST flag is set to this <code>Conversation</code>.</div>
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 synPacket)</code>
202 <div class="block">Records a TCP SYN packet as pertaining to this conversation (adds it to the the internal list).</div>
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 ackPacket)</code>
208 <div class="block">Attempt to ACK any FIN packets held by this conversation.</div>
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 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>
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 pcapPacket,
222 boolean clientIsSrc)</code>
223 <div class="block">Factory method for creating a <code>Conversation</code> from a <code>PcapPacket</code>.</div>
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 packet)</code>
229 <div class="block">Determine the direction of <code>packet</code>.</div>
232 <tr id="i8" class="altColor">
233 <td class="colFirst"><code>java.util.List<<a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/FinAckPair.html" title="class in edu.uci.iotproject.trafficreassembly.layer3">FinAckPair</a>></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>
238 <tr id="i9" class="rowColor">
239 <td class="colFirst"><code>java.util.List<org.pcap4j.core.PcapPacket></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>
244 <tr id="i10" class="altColor">
245 <td class="colFirst"><code>java.util.List<org.pcap4j.core.PcapPacket></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>
250 <tr id="i11" class="rowColor">
251 <td class="colFirst"><code>java.util.List<org.pcap4j.core.PcapPacket></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>
256 <tr id="i12" class="altColor">
257 <td class="colFirst"><code>java.util.List<org.pcap4j.core.PcapPacket></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>
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> </td>
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>
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 packet)</code>
277 Determines if the TCP packet contained in <code>packet</code> is a retransmission of a previously seen (logged)
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>
285 Is this <code>Conversation</code> a TLS session?</div>
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> </td>
293 <ul class="blockList">
294 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
297 <h3>Methods inherited from class java.lang.Object</h3>
298 <code>getClass, notify, notifyAll, wait, wait, wait</code></li>
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">
313 <h3>Constructor Detail</h3>
314 <a name="Conversation-java.lang.String-int-java.lang.String-int-">
317 <ul class="blockListLast">
318 <li class="blockList">
319 <h4>Conversation</h4>
320 <pre>public Conversation(java.lang.String clientIp,
322 java.lang.String serverIp,
323 int serverPort)</pre>
324 <div class="block">Constructs a new <code>Conversation</code>.</div>
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>
337 <!-- ============ METHOD DETAIL ========== -->
338 <ul class="blockList">
339 <li class="blockList"><a name="method.detail">
342 <h3>Method Detail</h3>
343 <a name="fromPcapPacket-org.pcap4j.core.PcapPacket-boolean-">
346 <ul class="blockList">
347 <li class="blockList">
348 <h4>fromPcapPacket</h4>
349 <pre>public static <a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/Conversation.html" title="class in edu.uci.iotproject.trafficreassembly.layer3">Conversation</a> fromPcapPacket(org.pcap4j.core.PcapPacket pcapPacket,
350 boolean clientIsSrc)</pre>
351 <div class="block">Factory method for creating a <code>Conversation</code> from a <code>PcapPacket</code>.</div>
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>
364 <a name="addPacket-org.pcap4j.core.PcapPacket-boolean-">
367 <ul class="blockList">
368 <li class="blockList">
370 <pre>public void addPacket(org.pcap4j.core.PcapPacket packet,
371 boolean ignoreRetransmissions)</pre>
372 <div class="block">Add a packet to the list of packets associated with this conversation.</div>
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>
384 <a name="getPackets--">
387 <ul class="blockList">
388 <li class="blockList">
390 <pre>public java.util.List<org.pcap4j.core.PcapPacket> 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>
394 <dt><span class="returnLabel">Returns:</span></dt>
395 <dd>the list of packets pertaining to this <code>Conversation</code>.</dd>
399 <a name="addSynPacket-org.pcap4j.core.PcapPacket-">
402 <ul class="blockList">
403 <li class="blockList">
404 <h4>addSynPacket</h4>
405 <pre>public boolean addSynPacket(org.pcap4j.core.PcapPacket 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>
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>
417 <a name="getSynPackets--">
420 <ul class="blockList">
421 <li class="blockList">
422 <h4>getSynPackets</h4>
423 <pre>public java.util.List<org.pcap4j.core.PcapPacket> 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>
427 <dt><span class="returnLabel">Returns:</span></dt>
428 <dd>the list of SYN packets pertaining to this <code>Conversation</code>.</dd>
432 <a name="addFinPacket-org.pcap4j.core.PcapPacket-">
435 <ul class="blockList">
436 <li class="blockList">
437 <h4>addFinPacket</h4>
438 <pre>public void addFinPacket(org.pcap4j.core.PcapPacket finPacket)</pre>
439 <div class="block">Adds a TCP FIN packet to the list of TCP FIN packets associated with this conversation.</div>
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>
446 <a name="attemptAcknowledgementOfFin-org.pcap4j.core.PcapPacket-">
449 <ul class="blockList">
450 <li class="blockList">
451 <h4>attemptAcknowledgementOfFin</h4>
452 <pre>public void attemptAcknowledgementOfFin(org.pcap4j.core.PcapPacket ackPacket)</pre>
453 <div class="block">Attempt to ACK any FIN packets held by this conversation.</div>
455 <dt><span class="paramLabel">Parameters:</span></dt>
456 <dd><code>ackPacket</code> - The ACK for a FIN previously added to this conversation.</dd>
460 <a name="getFinAckPairs--">
463 <ul class="blockList">
464 <li class="blockList">
465 <h4>getFinAckPairs</h4>
466 <pre>public java.util.List<<a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/FinAckPair.html" title="class in edu.uci.iotproject.trafficreassembly.layer3">FinAckPair</a>> 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>
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>
474 <a name="isGracefullyShutdown--">
477 <ul class="blockList">
478 <li class="blockList">
479 <h4>isGracefullyShutdown</h4>
480 <pre>public boolean 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>
485 <dt><span class="returnLabel">Returns:</span></dt>
486 <dd><code>true</code> if the connection has been gracefully shut down, false otherwise.</dd>
490 <a name="addRstPacket-org.pcap4j.core.PcapPacket-">
493 <ul class="blockList">
494 <li class="blockList">
495 <h4>addRstPacket</h4>
496 <pre>public void addRstPacket(org.pcap4j.core.PcapPacket packet)</pre>
497 <div class="block">Add a TCP segment for which the RST flag is set to this <code>Conversation</code>.</div>
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>
505 <a name="getRstPackets--">
508 <ul class="blockList">
509 <li class="blockList">
510 <h4>getRstPackets</h4>
511 <pre>public java.util.List<org.pcap4j.core.PcapPacket> 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>
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
520 <a name="equals-java.lang.Object-">
523 <ul class="blockList">
524 <li class="blockList">
526 <pre>public boolean equals(java.lang.Object 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>
531 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
532 <dd><code>equals</code> in class <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>
540 <a name="hashCode--">
543 <ul class="blockList">
544 <li class="blockList">
546 <pre>public int hashCode()</pre>
548 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
549 <dd><code>hashCode</code> in class <code>java.lang.Object</code></dd>
553 <a name="toString--">
556 <ul class="blockList">
557 <li class="blockList">
559 <pre>public java.lang.String toString()</pre>
561 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
562 <dd><code>toString</code> in class <code>java.lang.Object</code></dd>
566 <a name="isRetransmission-org.pcap4j.core.PcapPacket-">
569 <ul class="blockList">
570 <li class="blockList">
571 <h4>isRetransmission</h4>
572 <pre>public boolean isRetransmission(org.pcap4j.core.PcapPacket 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)
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?
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>
596 <ul class="blockList">
597 <li class="blockList">
599 <pre>public boolean isTls()</pre>
600 <div class="block"><p>
601 Is this <code>Conversation</code> a TLS session?
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>
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>
612 <a name="getTlsApplicationDataPackets--">
615 <ul class="blockList">
616 <li class="blockList">
617 <h4>getTlsApplicationDataPackets</h4>
618 <pre>public java.util.List<org.pcap4j.core.PcapPacket> 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>
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>
631 <a name="getDirection-org.pcap4j.core.PcapPacket-">
634 <ul class="blockListLast">
635 <li class="blockList">
636 <h4>getDirection</h4>
637 <pre>public <a href="../../../../../edu/uci/iotproject/trafficreassembly/layer3/Conversation.Direction.html" title="enum in edu.uci.iotproject.trafficreassembly.layer3">Conversation.Direction</a> getDirection(org.pcap4j.core.PcapPacket 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>
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>
654 <!-- ========= END OF CLASS DATA ========= -->
655 <!-- ======= START OF BOTTOM NAVBAR ====== -->
656 <div class="bottomNav"><a name="navbar.bottom">
659 <div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
660 <a name="navbar.bottom.firstrow">
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>
675 <li>Prev 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 Class</span></a></li>
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 Frames</a></li>
682 <ul class="navList" id="allclasses_navbar_bottom">
683 <li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
686 <script type="text/javascript"><!--
687 allClassesLink = document.getElementById("allclasses_navbar_bottom");
689 allClassesLink.style.display = "block";
692 allClassesLink.style.display = "none";
698 <ul class="subNavList">
699 <li>Summary: </li>
700 <li><a href="#nested.class.summary">Nested</a> | </li>
701 <li>Field | </li>
702 <li><a href="#constructor.summary">Constr</a> | </li>
703 <li><a href="#method.summary">Method</a></li>
705 <ul class="subNavList">
706 <li>Detail: </li>
707 <li>Field | </li>
708 <li><a href="#constructor.detail">Constr</a> | </li>
709 <li><a href="#method.detail">Method</a></li>
712 <a name="skip.navbar.bottom">
715 <!-- ======== END OF BOTTOM NAVBAR ======= -->