ĐẠI HỌC CÔNG NGHỆ THÔNG TIN- ĐẠI HỌC QUỐC GIA TP HCM
Lớp: IT005.F13.2(HT1)
BÀI THỰC HÀNH: GIAO THỨC TCP VÀ UDP
1.
Tìm địa chỉ IP và TCP port của máy khách gửi file cho gaia.cs.umass.edu?
-> IP:192.168.1.102
TCP port : 1161
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?
-> IP: 128.119.254.12
Destination Port: http 80 (80)
3.
TCP SYN segment sử dụng sequence number nào để khởi tạo kết nối TCP
giữa máy khách và gaia.cs.umass.edu? Thành phần nào trong segment cho ta biết
segment đó là TCP SYN segment?
-> sequence number : 0
Số bit của SYN : 1
4.
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?
-> + 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 : 0
+ giá trị của Acknowledgement trong SYNACK segment : 1
+ Bit của trường SYN ACK : 1
5.
Tìm sequence number của TCP segment có chứa lệnh HTTP POST?
-> sequence number của TCP segment có chứa lệnh HTTP POST : 1
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.
->
Segment
Sequenc Thời gian Thời gian
RTT(s)
e
segment
ACK
number được gửi
1
1
0.026477
0.053937
0.027460
2
566
0.041737
0.077294
0.035557
3
2026
0.054026
0.124085
0.070059
4
3486
0.054690
0.169118
0.11443
5
4946
0.077405
0.217299
0.13989
6
6406
0.078157
0.267802
0.18964
EstimatedRTT = 0.875 * EstimatedRTT + 0.125 * SampleRTT
EstimatedRTT segment 1:
EstimatedRT
T
0.027460
0.0285
0.0337
0.0438
0.0558
0.0725
EstimatedRTT = RTT for Segment 1 = 0.02746 second
EstimatedRTT segment 2:
EstimatedRTT = 0.875 * 0.02746 + 0.125 * 0.035557 = 0.0285
EstimatedRTT segment 3:
EstimatedRTT = 0.875 * 0.0285 + 0.125 * 0.070059 = 0.0337
EstimatedRTT segment 4:
EstimatedRTT = 0.875 * 0.0337+ 0.125 * 0.11443 = 0.0438
EstimatedRTT segment 5:
EstimatedRTT = 0.875 * 0.0438 + 0.125 * 0.13989 = 0.0558
EstimatedRTT segment 6:
EstimatedRTT = 0.875 * 0.0558 + 0.125 * 0.18964 = 0.0725
7.
Tìm độ dài của 6 segment đầu tiên?
-> + segment 1: 565 bytes
+ segment 2->6 : 1460 bytes (MSS)
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?
-> 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 : 5840 bytes
9.
Có segment nào được gửi lại hay không? Thông tin nào trong file trace cho
chúng ta biết điều đó?
-> các segment có thể tái truyền đi trong file trace. Có thể kiểm tra là 1 số hiệu
chuỗi được gửi đi 2 lần hoặc nhiều lần. Phần Info có thêm [TCP Retransmission]
10. Lương dữ liệu mà bên nhận thường acknowledge trong một ACK? 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)
->
ACK seq number
566
2026
3486
4946
6406
7866
…
Ack 1
Ack 2
Ack 3
Ack 4
Ack 5
Ack6
…
ACK data
565
1460
1460
1460
1460
1460
…
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.
-> Lưu lượng trung bình của 1 kết nối :
(0.75* Windown size)/ (RTT)
Trong đó : windown size (byte)
RTT (seconds)
12. 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.
-> Bắt đầu giai đoạn Slowstart khi bắt đầu kết nối. Tức là khi POST HTTP phân
mảnh được gửi ra ngoài . Không thể xác định được sự kết thúc của giai đoạn
Slowstart. Do TCP này gửi dữ liệu không đủ mạnh để dẫn đến tình trạng tắc nghẽn
-> khi TCP kết nối được giữa Sender và Reciever , nó có 1 giá trị duy nhất
(windows size) nó cho biết kích thướt thông tin được gửi giữa Sender và Reciever
13. Trả lời tương tự đối với file trace mà chúng ta có được trong trường hợp
chúng ta tự upload file alice.txt
14.
Chọn một gói tin UDP, xác định các trường (field) trong UDP header?
-> Các field tong UDP header: Source port, Destination port, Length, Checksum
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?
-> UDP gồm có 4 trường, kích thướt của mỗi trường:
- Source port number: 2 bytes
- Destination port : 2 bytes
- Length : 2 bytes
- Checksum: 2 bytes
16.
Giá trị của trường Length là độ dài của cái gì? Chứng minh?
-> giá trị của trường Length là độ dài của toàn bộ datagram: header và data.
17.
Số bytes lớn nhất mà payload của UDP có thể chứa?
-> với trường kích thướt 2 bytes. Kích thướt tối đa theo lý thuyết là 2^16 -1 =
65535
Cho phép 65535 – 8 = 65527 bytes
18.
Giá trị lớn nhất có thể có của port nguồn?
-> là 2^16 -1 =65535
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, chúng ta cần phải xem trường Protocol của IP header.
-> 17 (hệ 10) , 0x11 (hệ 16)
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.
-> Source port của gói tin gửi đi cũng là Destination port của gói tin phản hồi,
ngược lại, Source port của gói tin phản hồi là Destination port của gói tin gửi đi.
1/ Giao thức ICMP
1.1/ICMP và Ping
1.
Cho biết địa chỉ IP của máy Host mà SV đang dùng? Địa chỉ IP của
Host đích?
-> IP của máy Host mà SV đang dùng:
192.168.1.101
IP của Host đích 143.89.14.34
2.
Tại sao một gói tin ICMP không có số cổng (port number) của Host
nguồn và đích?
-> ICMP là giao thức lớp 3 trong khi port number lại được sử dụng ở lớp 4
3. Xem xét chi tiết một trong số các gói tin Ping Request được gửi bởi Host mà
SV đang dùng: Cho biết thông tin về ICMP Type và các Code Number của
nó? Gói tin ICMP có các trường thông tin nào khác? Các trường thông tin
Checksum, Sequence Number và định danh có bao nhiêu byte?
->
Type: 8
Code : 0
Checksum: 0xe45a
Identifier (BE): 512 (0x0200)
Identifier (LE): 2 (0x0002)
Sequence number (BE): 26369 (0x6701)
Sequence number (LE): 359 (0x0167)
*****Không có câu 4.
1.2/
ICMP và Traceroute
5. Cho biết địa chỉ IP của máy tính đang sử dụng? Địa chỉ IP của Host đích?
-> IP của máy tính đang sử dụng: 192.168.1.101
Địa chỉ IP của Host đích :138.96.146.2
6. Nếu ICMP gửi các gói tin UDP (như trong Unix/Linux), số của giao thức IP
(IP protocol number) vẫn là 01 có đúng không? Nếu không thì nó sẽ là gì?
-> Nó không còn là 01 nữa. Nó là 17
7. Xem chi tiết gói tin ICMP Echo trong hình chụp màng hình đã thực hiện,
nó có khác với các gói tin truy vấn ICMP Ping trong phần đầu của bài thực
hành này hay không? Nếu có, hãy giải thích?
-> không có gì khác biệt
8. Xem chi tiết gói tin ICMP Error trong hình chụp màng hình đã thực hiện,
nó có nhiều trường thông tin hơn gói tin ICMP Echo. Những trường thông tin
này bao gồm những gì?
->
Type: 11
Code : 0
Không có thuộc tính Identifier
9. Xem chi tiết 3 gói tin ICMP cuối cùng nhận được ở Host nguồn. Những gói
tin này khác với các gói tin ICMP Error như thế nào? Tại sao chúng khác
nhau?
-> Đó là 3 gói tin TCMP reply
10. Trong quá trình đo Tracert, có đường liên kết (link) nào mà có thời gian
trễ dài hơn đáng kể so với các link khác hay không? Xem lại hình 4, có đường
liên kết link nào mà có thời gian trễ dài hơn đáng kể so với các link khác hay
không? Căn cứ vào các tên Router có thể đoán biết được vị trí của 2 Router ở
điểm kết thúc ở link này hay không?
->
Giữa link 9 và 10 có thời gian dài đáng kể hơn so với các link khác. Vị trí 2 router
ở điểm kết thúc là Pastourelle, Pháp.
2/ Giao thức IP
1.
Chọn gói tin ICMP Echo Request đầu tiên gửi bởi máy tính của chúng
ta, và mở phần nội dung của phần Internet Protocol của gói tin trong
cửa sổ hiển thị chi tiết về gói tin. Địa chỉ IP của máy đang dùng là gì?
-> Địa chỉ IP của máy đang dùng: 192.168.1.102
2.
Trong Header của gói tin IP, giá trị trong trường thông tin về giao thức
lớp cao hơn là gì?
-> Trường :ICMP
3. IP Header có bao nhiêu byte? Trong Payload của gói tin IP có bao nhiêu
byte? Giải thích.
-> IP Header= total length- header length =36
+ Trong Payload của gói tin IP có 0 byte vì flags = 0x00
4. Gói tin IP có bị phân mảnh không? Giải thích.
-> Gói tin IP không bị phân mảnh . Vì flags=0 và offset =0
5. Các trường thông tin (field) nào trong gói tin IP luôn thay đổi từ một gói tin
này sang gói tin kế tiếp trong chuỗi các gói ICMP gửi bởi máy tính của chúng
ta?
->
+Identification
+ Time to live
+ Checksum
6. Các trường thông tin nào là không đổi (hằng sô)? Các trường thông tin nào
phải cố định không thay đổi? Các trường thông tin nào phải thay đổi? Tại
sao?
->
Các trường thông tin không thay đổi:
+ Version
+ Header length
+Flag
+ Fragment offset
+ Protocol
+Sourece
+Destination
Checksum phải thay đổi vì phụ thuộc vào Time to Live và ID
7. Mô tả mẫu mà chúng ta thấy trong các giá trị trong trường thông tin về
định danh của gói tin IP.
-> có độ dài 16 bit
8. Giá trị trong trường thông tin định danh và trường về TTL là gì?
-> Identification: 0x32da (13018)
TTL : 11
9. Có phải các giá trị này vẫn không thay đổi đối với tất cả các gói tin trả lời
ICMP TTL-exceeded gửi đến máy tính của chúng ta bởi Router gần nhất? Tại
sao?
-> giá trị này vẫn không thay đổi đối với tất cả các gói tin trả lời ICMP TTLexceeded gửi đến máy tính của chúng ta bởi Router gần nhất vì giá trị TTL đối với
router là duy nhất. TTL phụ thuộc vào hệ điều hành
Phân mảnh (Fragmentation)
10. Tìm gói tin ICMP EchoRequest được gửi bới máy tính của chúng ta sau
khi thay đổi Packet Size trong Pingplotter thành 2000. Có phải gói tin đó được
phân mảnh qua nhiều hơn một gói tin IP?
-> gói tin bị phân mảnh.
11. In ra phân mảnh đầu tiên của gói IP đã bị phân mảnh. Thông tin nào
trong IP Header chỉ ra rằng gói tin đã bị phân mảnh? Thông tin nào trong IP
Header chỉ ra rằng liệu đây có phải là phân mảnh đầu tiên hay là các phân
mảnh sau? Gói tin IP này dài bao nhiêu?
-> Trường flags cho ta biết gói tin bị phân mảnh.
+ Fragment offst=0 . cho ta biết đây là phân mảnh đầu tiên
+ gói tin này daì 1500 bytes
12. In ra phân mảnh thứ hai của gói tin IP đã bị phân mảnh. Thông tin nào
trong IP Header chỉ ra rằng nó không phải là phân mảnh đầu tiên? Có các
phân mảnh nào khác nữa không?
-> Fragment offset= 1480 cho chúng ta biết nó không phải phân mảnh đầu tiên
Không có phân mảnh nào khác vì Flags =0x00
13. Những trường thông tin nào thay đổi trong IP Header giữa phân mảnh
đầu tiên và thứ hai?
-> Những trường thông tin thay đổi:
+ Total length
+ flags
+Fragment offset
+ Checksum
Bây giờ hãy tìm gói tin ICMP Echo Request đầu tiên được gửi bởi máy tính của
chúng ta sau khi chúng ta thay đổi kích thước gói tin trong Pingplotter thành 3500.
14. Có bao nhiêu phân mảnh được tạo ra từ gói tin gốc?
->Có 3. Dựa vào fragment offset =0
15. Những trường thông tin nào thay đổi trong IP Header giữa các phân
mảnh?
-> + Total length
+ flags
+Fragment offset
+ Checksum
1/ Bắt và phân tích Ethernet frame
1. Địa chỉ Ethernet 48 bit của máy tính chúng ta?
Địa chỉ Ethernet 48 bit của máy tính chúng: 00:d0:59:a9:3d:68
2. Địa chỉ đích (Ethernet 48 bit) trong Ethernet frame? Đó có phải là địa chỉ của
gaia.cs.umass.edu hay không (Gợi ý: là không). Địa chỉ đó là của thiết bị nào? (trang 468469 trong giáo trình)
Địa chỉ đích (Ethernet 48 bit) trong Ethernet frame: 00:06:25:da:af:73
Đây không phải là địa chỉ của gaia.cs.umass.edu mà là địa chi của router Linksys vì gói tin phải
được chuyển đến router của mạng con trước khi router này chuyển tiếp gói tin.
3. Giá trị hệ 16 của trường Frame type (2 byte). Giao thức tầng trên tương ứng là gì?
Giá trị hệ 16 của trường Frame type (2 byte): 0x0800
4. Tính từ ký tự “G” (GET) trong frame đến hết frame có bao nhiêu byte?
Có 54 byte tính từ đầu đến nơi xuất hiện ký tự “G” (GET) trong frame. 14 byte đầu của Ethernet
Frame,20 byte IP Header , 20 byte TCP Header trước khi bắt đầu của HTTP
Trả lời các câu hỏi bên dưới dựa vào nội dung của thông điệp đầu tiên phản hồi cho thông điệp HTTP
GET
5. Địa chỉ nguồn trong Ethernet frame? Có phải là địa chỉ của máy tính chúng ta hay của
gaia.cs.umass.edu? (Gợi ý: là không). Địa chỉ đó của thiết bị nào?
Địa chỉ gốc trong Ethernet frame: 00:06:25:da:af:73
Đây không phải là nguồn trong Ethernet frame hay địa chỉ của gaia.cs.umass.edu mà là địa chi
của router Linksys
6. Địa chỉ đích của Ethernet frame? Có phải đó là địa chỉ của máy tính chúng ta hay không?
Địa chỉ đích của Ethernet frame: 00:d0:59:a9:3d:68 và là địa chỉ của máy tính chúng ta
7. Giá trị hệ 16 của trường Frame type (2 byte). Giao thức tầng trên tương ứng là gì?
Giá trị hệ 16 của trường Frame type (2 byte): 0x0800
8. Tính từ ký tự “O” (OK) trong frame đến hết frame có bao nhiêu byte?
Có 54 byte tính từ đầu đến nơi xuất hiện ký tự “O” (OK) trong frame. 14 byte đầu của Ethernet
Frame,20 byte IP Header , 20 byte TCP Header trước khi bắt đầu của HTTP
2/ARP
2.1/ARP caching
9. Viết nội dung của ARP cache trong máy tính của chúng ta. Giải thích ý nghĩa của từng dòng
trong ARP cache?
Cache ARP bao gồm có : địa chỉ IP ở cột Internet Address. Địa chỉ MAC ở cột Physical Address ,
cột Type là kiểu giao thức
2.2/Quan sát hành vi của ARP
10. Giá trị hệ 16 của địa chỉ nguồn và đích trong thông điệp ARP request?
Giá trị hệ 16 của địa chỉ nguồn: 00:d0:59:a9:3d:68
Giá trị hệ 16 của địa chỉ đích: ff:ff:ff:ff:ff:ff là địa chỉ quảng bá
11. Giá trị hệ 16 của trường Frame type (2 byte). Giao thức tầng trên tương ứng là gì?
Giá trị hệ 16 của trường Frame type (2 byte) : 0x0806 . Giao thức ARP
12. Download bản miêu tả ARP từ . Một bản
miêu tả chi tiết khác dễ theo dõi hơn />a. Tính từ trương opcode , một gói tin ARP dài bao nhiêu byte?
Một gói tin ARP dài : 20 byte
b. Giá trị của trường opcode trong phần payload của ARP request?
Giá trị của trường opcode trong phần payload của ARP request : 00 01
c. Thông điệp ARP có chứa địa chỉ IP của bên gửi không?
Có . Thông điệp ARP có chứa địa chỉ IP của bên gửi: 192.168.1.105
d. Tìm trong phần payload của ARP: Câu hỏi mà ARP request yêu cầu – Tìm địa chỉ Ethernet
tương ứng với địa chỉ IP đã cho?
Khi trường “ Target Mac address” được thiết lập thành 00:00:00:00:00:00 thì đã yêu cầu địa chỉ
tương ướng với địa chỉ IP 192.169.1.1
13. Tìm thông điệp ARP reply trả lời cho thông điệp ARP request
a. Tính từ trương opcode , một gói tin ARP dài bao nhiêu byte?
Tính từ trương opcode , một gói tin ARP dài 20 byte
b. Giá trị của trường opcode trong phần payload của ARP request
Giá trị của trường opcode trong phần payload của ARP request : 00 02
c. Tìm trong phần payload của ARP: Câu trả lời cho ARP request tương ứng – Địa chỉ
Ethernet tương ứng với địa chỉ IP đã yêu cầu?
Thông điệp trả lời cho yêu cầu ARP trước xuất hiện ở “Sender MAC address” giá trị của nó là
00:06:25:da:af:73 tương ướng với IP address 192.168.1.1
14. Giá trị hệ 16 của địa chỉ nguồn và đích trong thông điệp ARP reply?
Giá trị hệ 16 của địa chỉ nguồn trong thông điệp ARP reply : 00:06:25:da:af:73
Giá trị hệ 16 của địa chỉ đích trong thông điệp ARP reply :00:d0:59:a9:3d:68
15. Mở file ethernet-ethereal-trace-1 đã được cung cấp trong thư mục wireshark-traces. 2 gói
tin đầu là ARP request và ARP reply tương ứng. Tuy nhiên, gói tin thứ 6 là một ARP
request khác , tại sao không có gói tin ARP reply trả lời cho gói tin ARP request này?
Vì các yêu cầu ARP được quảng bá nhưng phản hồi ARP thì gửi trực tiếp đến máy tính có địa chỉ
Ethernet đã gửi yêu cầu , do vậy máy tính chúng ta không phải là máy tính đã gửi yêu cầu ARP
nên không nhận được phản hồi ARP mà chỉ nhận được yêu cầu ARP quảng bá