Wireshark Lab: TCP
1. Capturing a bulk TCP transfer from your computer to a remote
server
당신의 컴퓨터에서 remote 서버로 transfer하는 file의 packet trace를 얻기 위해 Wireshark를 사용해야 한다.
어떻게 하냐면, 웹페이지에 access해서 할 것이다. 그 웹페이지에서 너의 컴퓨터에 저장된 파일을 이름을 입력하면, 해당 파일을 웹 서버로 보내준다. 이때 HTTP POST 메소드를 사용한다.
우린 많은 양의 data를 너의 컴퓨터에서 다른 컴퓨터로 보낼 것이기 떄문에,
GET 메소드보다는 POST 메소드를 사용하는 게 더 좋다.
당연하게도 우리는 이 과정을 Wireshark를 사용하면서 할 것이다.
너의 컴퓨터가 보내고 받는 TCP segments를 얻어야 하니까!
따라해라:
- 웹 브라우저를 키고, http://gaia.cs.umass.edu/wiresharklabs/alice.txt 로 가서 Alice in Wonderland 의 ASCII copy를 검색해라.
- 이 파일을 니 컴퓨터 어딘가에 저장해라. 유튜브 영상 보니까 그냥 우클릭->다른이름으로 저장해서 alice.txt 파일로 저장하면 되는듯
- 다음으로 http://gaia.cs.umass.edu/wireshark-labs/TCP-wireshark-file1.html로 가라
- 아래와 같은 화면을 볼 수 있을 거다.
- Browse (파일선택)버튼을 이용해서, 당신 컴퓨터에 저장한 Alice in Wonderland 파일의 이름 (full path name)을 폼에 넣고 입력해라. (그냥 manually 해도 되긴 함) 아직 "Upload alice.txt file" 버튼을 누르지는 말고!
- 이제 Wireshark를 실행하고, packet captrue를 진행해라. (Capture-> Options) 그리고 OK 를 눌러라. (no need to select option)
- 브라우저로 돌아와서, "Upload alice.txt file" 버튼을 눌러라. gaia.cs.umass.edu 서버에 파일을 업로드 하기 위함이다. 파일이 업로드 되면, 짧은 축하메세지(Congratulation 어쩌구)가 브라우저 창에 보여질 것이다.
- Wireshark packet capture 를 멈춰라. 당신의 wireshark window는 아래와 비슷할 것이다.
참고1 gaia.cs.umass.edu/wireshark-labs/wireshark-traces.zip 여기 가서 tcp-ethereal-trace-1 파일을 extract 하면된다. 파일을 다운로드 한 후에, Wireshark 에서 load 해서, File pull down menu를 통해 veiw할 수 있다. Open을 클릭하고, tcp-ethereal-trace-1 trace file을 선택해라.
|
2. A first look at the captured trace
TCP connection의 behavior를 자세하게 분석하기 전에, trace의 high level 을 view 해보자.
- 우선, Wireshark window 에 displayed 된 packet 들을 filter 해보자.
- Wireshark window의 위쪽에 있는 display fileter specification window 에 "tcp" 라고 입력해라. (소문자, 따옴표 없이, 그리고 입력한 후에 return 을 클릭해라!)
당신이 보고 있는것은 여러 개의 TCP 와 HTTP 메세지이다. 당신의 컴퓨터와 gaia.cs.umass.edu 가 주고 받은 것이지!
당신은 initial three-way handshake 를 봐야한다. 그건 SYN message를 포함하고 있지.
당신은 하나의 HTTP POST message 와, 여러 개의 "HTTP Continuation" 메세지를 봐야한다.
그것들은 당신의 컴퓨터에서 gaia.cs.umass.edu 로 보낸 것이지.
저번에 HTTP Wireshark lab에서 discuss 했던걸 다시 생각해봐라. 거기서는 HTTP Continuation message 같은 건 없었다. 이건 a single HTTP message를 carry 하기 위해 사용되었던 multiple TCP segments 를 indicate 하는 wireshark의 방법이었다.
당신은 TCP ACK segmets 를 봐야한다. 그건 gaia.cs.umass.edu 에서 당신의 컴퓨터로 returned된 것이지.
아래의 질문들에 답해라.
http://gaia.cs.umass.edu/wireshark-labs/wireshark-traces.zip 에 있는 wireshark captured packet file 인 tcp-ethereal-trace-1 파일을 열어서! (즉, trace를 download 해서 그 trace를 Wireshark 에서 열라는 뜻, 위에 있는 참고1 참고)
가능하다면, 질문에 대한 답을 할 때, 패킷의 printout을 갖고 해라. printout 에 주석을 달면서 대답해라. (그러면 걍 편하다고 알려주는 거인듯)
packet을 print 하려면 File->Print 에서 Selected packet only 를 선택하고, Packet summary line 을 선택해라. 그리고 당신이 질문에 대답하기 위해 minimum amount of packet detail 을 선택해라. (근데 내가 해보니까 이거 할 필요 없음 어짜피 아래에 있는 창에 다 있음)
1. What is the IP address and TCP port number used by the client computer (source) that is transferring the file to gaia.cs.umass.edu? : 이 질문에 대해 답하려면, HTTP message 하나를 선택하고 해당 HTTP message를 carry 하기 위해 사용된 TCP packet 의 deatil을 explore 하는게 가장 쉬운 방법이다. "details of the selected packet header window"를 사용해서 말이지! ("Getting Started with Wireshark" Lab의 Figure 2 를 참고해라. Wireshark windows에 대해 잘 모른다면)
2. What is the IP address of gaia.cs.umass.edu? On what port number is it sending and receiving TCP segments for this connection?
만약 너의 own trace를 생성하는게 가능하다면, 아래의 질문도 답해라. (여기부터 내 trace로 하는거임)
3. What is the IP address and TCP port number used by your client computer (source) to transfer the file to gaia.cs.umass.edu? (아래에 빨간 설명 먼저 보고 풀어야함!!!! 안 그러면 돌아와서 한참 다시해야함!!)
이 Lab이 HTTP 에 관한게 아니라 TCP 에 관한 것이기 때문에, Wireshark 의 "listing of captured packets" window를 변경하자. 그렇게 함으로써 HTTP messages 를 포함하고 있는 TCP segments에 대한 정보를 볼 수 있다.
Wireshark 가 그렇게 하기 위해, Analayze -> Enabled Protocols 를 선택해라. 그리고 HTTP box 의 체크를 해제하고, OK를 선택해라. 그러면 아래와 같은 Wireshark window 화면을 볼 수 있을 것이다.
당신의 컴퓨터와 gaia.cs.umass.edu 사이에서 주고 받은 여러개의 TCP segments - 이게 당신이 보고 있는 것이다.
앞으로, 이번 lab에서 우리는 당신이 캡쳐한(아니면 다운 받은) packet trace를 사용해서 TCP behavior 를 공부할 것이다.
3. TCP Basics
TCP segments 에 대한 아래의 질문들에 대해 답해라:
4. What is the sequence number of the TCP SYN segment that is used to initiate the TCP connection between the client computer and gaia.cs.umass.edu? What is it in the segment that identifies the segment as a SYN segment?
5. What is the sequence number of the SYNACK segment sent by gaia.cs.umass.edu to the client computer in reply to the SYN? What is the value of the ACKnowledgement field in the SYNACK segment? How did gaia.cs.umass.edu determine that value? What is it in the segment that identifies the segment as a SYNACK segment?
6. What is the sequence number of the TCP segment containing the HTTP POST command? Note that in order to find the POST command, you’ll need to dig into the packet content field at the bottom of the Wireshark window, looking for a segment with a “POST” within its DATA field.
7. Consider the TCP segment containing the HTTP POST as the first segment in the TCP connection.
(마찬가지로 아래에 있는 빨간 설명 먼저 보고 하셈)
What are the sequence numbers of the first six segments in the TCP connection (including the segment containing the HTTP POST)?
At what time was each segment sent?
When was the ACK for each segment received? Given the difference between when each TCP segment was sent, and when its acknowledgement was received, what is the RTT value for each of the six segments?
What is the EstimatedRTT value (see page 249 in text) after the receipt of each ACK?
Assume that the value of the EstimatedRTT is equal to the measured RTT for the first segment, and then is computed using the EstimatedRTT equation on page 249 for all subsequent segments.
Note: Wireshark has a nice feature that allows you to plot the RTT for each of the TCP segments sent. Select a TCP segment in the “listing of captured packets” window that is being sent from the client to the gaia.cs.umass.edu server. Then select: Statistics->TCP Stream Graph- >Round Trip Time Graph.
8. What is the length of each of the first six TCP segments?
The TCP segments in the tcp-ethereal-trace-1 trace file are all less that 1460 bytes. This is because the computer on which the trace was gathered has an Ethernet card that limits the length of the maximum IP packet to 1500 bytes (40 bytes of TCP/IP header data and 1460 bytes of TCP payload). This 1500 byte value is the standard maximum length allowed by Ethernet. If your trace indicates a TCP length greater than 1500 bytes, and your computer is using an Ethernet connection, then Wireshark is reporting the wrong TCP segment length; it will likely also show only one large TCP segment rather than multiple smaller segments. Your computer is indeed probably sending multiple smaller segments, as indicated by the ACKs it receives. This inconsistency in report edsegment lengths is due to the interaction between the Ethernet driver and the Wireshark software. We recommend that if you have this inconsistency, that you perform this lab using the provided trace file. |
9. What is the minimum amount of available buffer space advertised at the received for the entire trace?
Does the lack of receiver buffer space ever throttle the sender?
10. Are there any retransmitted segments in the trace file?
What did you check for (in the trace) in order to answer this question?
11. How much data does the receiver typically acknowledge in an ACK?
Can you identify cases where the receiver is ACKing every other received segment? (see Table 3.2 on page 257 in the text)
12. What is the throughput (bytes transferred per unit time) for the TCP connection?
Explain how you calculated this value.
'📝CS 공부 > 네트워크' 카테고리의 다른 글
컴퓨터 네트워킹 : What is a Protocol? (0) | 2020.10.01 |
---|---|
컴퓨터 네트워킹 : A services Description (0) | 2020.10.01 |
컴퓨터 네트워킹 : A Nuts-and-Bolts Description (0) | 2020.09.30 |
댓글
이 글 공유하기
다른 글
-
컴퓨터 네트워킹 : What is a Protocol?
컴퓨터 네트워킹 : What is a Protocol?
2020.10.01 -
컴퓨터 네트워킹 : A services Description
컴퓨터 네트워킹 : A services Description
2020.10.01 -
컴퓨터 네트워킹 : A Nuts-and-Bolts Description
컴퓨터 네트워킹 : A Nuts-and-Bolts Description
2020.09.30