2 Bắt gói tin trong quá trình gửi file sử dụng TCP lên máy chủ Ghi chú rằng nếu bạn không thể chạy Wireshark trên Internet thật sự thì có thể mở file tcp-ethereal-trace-1 có sẵn trong t
Trang 1BÀI TẬP THỰC HÀNH SỐ 3 MÔN HỌC: NHẬP MÔN MẠNG MÁY TÍNH
TCP VÀ UDP
1 Mục tiêu
- Tìm hiểu về hành vi của TCP và UDP
- Phân tích quá trình gửi và nhận một file 150KB từ máy khách lên máy chủ
- Tìm hiểu việc TCP sử dụng sequence number và acknowledgement number để có thể truyền dữ liệu tin cậy
- Phân tích thuật toán điều khiển tắc nghẽn và điều khiển luồng
2 Bắt gói tin trong quá trình gửi file sử dụng TCP lên máy chủ
Ghi chú rằng nếu bạn không thể chạy Wireshark trên Internet thật sự thì có thể mở file tcp-ethereal-trace-1 có sẵn trong thư mục wireshark-traces
Thực hiện các bước sau khi có kết nối Internet:
lưu file vào máy tính
Trang 2- Sử dụng nút Browse trong trang web để chọn file alice.txt vừa download Đừng nhấn nút Upload alice.txt file
- Mở Wireshark và bắt đầu bắt gói (Capture -> Start)
- Quay lại trình duyệt, nhấn nút Upload alice.txt file để upload file lên server Khi
file đã được upload, một tin nhắn chúc mừng sẽ xuất hiện trên trình duyệt
- Ngưng bắt gói
3 Phân tích hành vi TCP
- Gõ “tcp” vào bộ lọc của Wireshark để hiển thị tất cả các gói tin TCP
Trang 3Quan sát các gói tin và trả lời các câu hỏi sau: (để có minh chứng cho câu trả lời, các
bạn cần chụp lại màn hình hoặc dùng chức năng “Print” của Wireshark: File -> Print Chọn Selected packet only và Packet summary line)
1 Tìm địa chỉ IP và TCP port của máy khách gửi file cho gaia.cs.umass.edu?
2 Tìm địa chỉ IP của gaia.cs.umass.edu? Kết nối TCP dùng để gửi và nhận các segments sử dụng port nào?
Trang 44 Tìm sequence number của SYNACK segment được gửi bởi gaia.cs.umass.edu đến máy khách để trả lời cho SYN segment? Tìm giá trị của Acknowledgement trong SYNACK segment? Làm sao gaia.cs.umass.edu có thể xác định giá trị đó? Thành phần nào trong segment cho ta biết segment đó là SYNACK segment?
5 Tìm sequence number của TCP segment có chứa lệnh HTTP POST?
6 Giả thiết rằng TCP segment chứa lệnh HTTP POST là segment đầu tiên của kết nối TCP Tìm sequence number của 6 segments đầu tiên (tính cả segment có chứa HTTP POST)? Thời gian mà mỗi segment được gửi? Thời gian ACK cho mỗi segment được nhận? Đưa ra sự khác nhau giữa thời gian mà mỗi segment được gửi và thời gian ACK cho mỗi segment được nhận, tính RTT cho 6 segments?
Tính EstimatedRTT sau khi nhận mỗi ACK? Giả sử EstimatedRTT bằng với RTT cho segment đầu tiên, sau đó tính EstimatedRTT với công thức trong giáo trình
trang 239 cho các segment tiếp theo
7 Tìm độ dài của 6 segment đầu tiên?
8 Tìm lượng buffer còn trống nhỏ nhất mà bên nhận thông báo cho bên gửi trong suốt file trace?
9 Có segment nào được gửi lại hay không? Thông tin nào trong file trace cho bạn biết điều đó?
10 Lượng dữ liệu mà bên nhận thường nhận trong một ACK là bao nhiêu? Xác định các trường hợp mà bên nhận ACK cho mỗi segment được nhận (bảng 3.2 trong trang 247 của giáo trình)
11 Thông lượng (throughput – byte/s) của kết nối TCP? Giải thích cách tính thông lương
Trang 54 Điều khiển tắc nghẽn
Để kiểm tra lượng dữ liệu được truyền trong một đơn vị thời gian, thay vì phải tự tính
toán trực tiếp từ dữ liệu của các gói tin, ta sử dụng một tính năng của Wireshark – Time –
Sequence – Graph (Steven)
- Chọn một segment bất kỳ trong phần danh sách các gói tin Chọn Statistics ->
TCP Stream Graph -> Time-Sequence-Graph(Steven) Ta sẽ thấy một biểu đồ
tương tự như sau:
- Mỗi chấm trong biểu đồ tượng trưng cho một TCP segment có sequence number
Trang 612 Sử dụng Time-Sequence-Graph để quan sát sequence number tương ứng với thời gian segment được gửi Xác định giai đoạn Slowstart bắt đầu và kết thúc, đâu là giai đoạn tránh tắc nghẽn (Congestion Avoidance)? Đưa ra nhận xét, so sánh với hành vi của TCP đã học trong giáo trình
13 Trả lời tương tự đối với file trace mà các bạn có được trong trường hợp các bạn tự upload file alice.txt
5 Bắt gói và phân tích UDP
- Bật Wireshark, bắt đầu bắt gói Thông thường sẽ xuất hiện một số gói tin UDP như SNMP sẽ xuất hiện trên danh sách các gói tin
- Ngưng bắt gói, lọc các gói tin UDP để Wireshark chỉ hiển thị các gói tin UDP Nếu không có gói tin UDP nào thì các bạn cũng có thể sử dụng file htp-ethereal-trace-5 đã được cung cấp trong thư mục wireshark-traces
- Trả lời các câu hỏi sau:
14 Chọn một gói tin UDP, xác định các trường (field) trong UDP header?
15 Qua thông tin hiển thị của Wireshark, xác định độ dài (tính theo byte) của mỗi trường trong UDP header?
16 Giá trị của trường Length là độ dài của cái gì? Chứng minh?
17 Số bytes lớn nhất mà payload của UDP có thể chứa?
18 Giá trị lớn nhất có thể có của port nguồn?
19 Xác định protocol number của UDP (cả hệ 10 lẫn hệ 16)? Để trả lời câu hỏi này, các bạn cần phải xem trường Protocol của IP header
20 Kiểm tra một cặp gói tin gồm: gói tin do máy mình gửi và gói tin phản hồi của gói tin đó Miêu tả mối quan hệ về port number của 2 gói tin