1. Địa chỉ IP máy tính của bạn là gì ?
Địa chỉ IP máy tính của tôi là : 192.168.1.4
2. Trong gói IP packet header,trường giá trị nào thuộc về giao thức lớp trên? Đó là trường : ICMP(0x01)
3. Kích cỡ của IP header ? Kích cỡ của IP datagram ở trong payload ? Giải thích tại sao lại xác định được những giá trị đó?
IP header = Total Length – Header Length = 56 – 20 = 36 .
payload of the IP datagram is 0 bytes bởi vì trường Flags : 0×00 . 4. IP datagram có bị phân mảnh ko ? Giải thích tại sao lại ?
IP datagram ko bị phân mảnh . Vì flags=0 và offset=0; 5. Những trường giá trị nào luôn thay đổi trong IP datagram…?
Trả lời:
1. Identification 2. Time to live(TTL) 3. Checksum
6. Những giá trị nào là hằng số ? Những giá trị nào phải thay đổi ? Tại sao Những trường giá trị là hằng số: 1. Version 2. Header length 3. Flag 4. Fragment offset 5. Protocol 6. Sourece 7. Destination
Checksum phải thay đổi vì checksum phụ thuộc vào TTL và ID .
7. Giới thệu qua về những gì bạn nhìn thấy ở trường identification của IP datagram Identification : unique IP datagram value. Có độ dài là 16 bits
8. Giá trị của Identification và TTL? Trả lời:
Identification: 0×117b(4475) Time to live: 1
9. Giá trị ICMP TTL-exceeded replies gửi tới máy nguồn từ các router gần nhất ( first hop) có thay đổi được ko? Vì sao?
Trả lời:
Giá trị ICMP TTL-exceeded replies gửi tới máy nguồn từ các router gần nhất ( first hop) ko được thay đổi vì giá trị TTL đối với router ở hop đầu tiên là duy nhất. TTL phụ thuộc vào hệ điều hành và số lượng các hop.
10. Tìm đến gói tin request echo ICMP đầu tiên sau khi bạn thay đôi giá trị của Packet trong chương trình pinglotter lên 2000. Gói tin này có bị phân mảnh thành nhiều IP datagram ko?
Theo hình vẽ gói tin có bị phân mảnh thành các IP datagram.
11. Trường thông tin nào ở trong IP header cho thấy rằng gói dữ liệu có bị phân mảnh hay ko? Và trường thông tin nào cho thấy đó có phải là fragment đầu tiên hay ko? Kích cỡ của IP datagram?
Giá trị flags chứng tỏ rằng gói dữ liệu được phân mảnh. Nếu đó là fragment đầu tiên thì feagment offset thiết lập bằng 0. kích cỡ của gói dữ liệu IP là 1500 (bytes)
12. Thông tin nào ở trong IP header cho thấy đó ko phải là datagram fragment đầu tiên? Nó có bị phân mảnh nữa ko? Giải thích?
The Fragment offset = 1480 vì thế nó không phải datagram fragment đầu tiên. Nó sẽ ko phân mảnh nữa vì Flags = 0x00
0..= Reserved bit: Not set .0. = Don’t fragment: Not set ..0 = More fragments: Not set
13. Giá trị nào thay đổi trong IP header giữa fragment đầu tiên và thứ hai ? Trả lời 1.Total length 2.Flag 3.Fragment offset 4.Checksum
14. Có bao nhiêu fragments được tạo ra từ datagram đầu tiên ? Quan sát wireshark ta thấy có 3 gói tin có fragment offset =0 => Có 3 gói packet được tạo từ datagram gốc
15. Những giá trị nào thay đổi trong IP header giữa các fragment ? Trả lời: 1.Total length 2.Flag 3.Fragment offset 4.Checksum 8. Wireshark Lab : TCP
1. Hỏi Số hiệu cổng TCP và địa chỉ IP được sử dụng bởi máy tính client (nguồn) là gì, tức thứ đang truyền file tới gaia.cs.umass.edu?
Trả lời:
2. Hỏi địa chỉ IP của gaia.cs.umass.edu là gì? Số hiệu của cổng nó đang gửi và nhận các phần TCP cho kết nối này là gì?
Trả lời:
Địa chỉ IP: 128. 119. 245. 12 Số hiệu cổng: 80
3. Số hiệu cổng TCP và địa chỉ IP được sử dụng bởi máy tính client của bạn (nguồn) để trao đổi fiel tới gaia.cs.umass.edu là gì?
Trả lời:
Số hiệu cổng TCP: 49695 Địa chỉ IP: 192. 168. 1. 35
4. Số hiệu các chuỗi của phần TCP SYN được sử dụng để khởi tạo kết nối TCP giữa máy tính client và gaia.cs.umass.edu là gì? Nó là gì trong các phần đó, thứ định danh các phần như 1 phần SYN?
Trả lời:
Số hiệu chuỗi: 0 Bit cờ trường SYN: 1
5. Số hiệu chuỗi của phần SYNACK gửi bởi gaia.cs.umass.edu tới máy tính client để phản hồi SYN là gì? Giá trị của trường ACKnowledgement trong phần SYNACK là gì?
gaia.cs.umass.edu xác định giá trị đó như thế nào? Nó là gì trong phần mà dùng để định danh phần như 1 phần SYSACK?
Trả lời:
Số hiệu chuỗi của phần SYNACK gửi bới gaia.cs.umass.edu tới máy tính client để phản hồi SYN : 0
Giá trị của trường ACKnowledgement trong phần SYNACK: 1
Bit cờ của trường ACK = 1 và bit cờ trường SYN: 1, chúng được định danh phần nhứ 1 phần SYNACK.
6. Số hiệu chuỗi của phần TCP chứa lệnh HTTP POST là gì? Trả lời:
7. Xem xét phần TCP chứa HTTP POST như là phần đầu tiên trong kết nối TCP. Các Số hiệu chuỗi của 6 phần đầu tiên trong kết nối TCP ( bao gồm cả phần chứa HTTP POST) là gì? Thời gian mỗi phần gửi là bao lâu? Khi nào ACK cho mỗi phần được nhận? Đưa sự khác biệt giữ mỗi phần TCP được gửi, và khi acknowledgement của nó được nhận, giá trị RTT cho mỗi một trong 6 phần đó là bao nhiêu? Giá trị EstimatedRTT (xem trang 249 trong tài liệu) sau khi nhận mỗi ACK là bao nhiêu? Cho rằng giá trị của EstimatedRTT là bằng với giá trị RTT đo được trong segment đầu tiên, và sau đó được tính toán sử dụng đẳng thức EstimatedRTT trong trang 249 cho các segment đến sau. Chú ý: Wireshark có 1 tính chất tốt là cho phép bạn vẽ đồ thị RTT cho mỗi các phần TCP được gửi. Chọn TCP segment trong cửa sổ “listing of captured packets”, tức thứ được gửi từ client tới server gaia.cs.umass.edu . Sau đó chọn Statistics->TCP Stream Graph->Round Trip Time Graph.
Trả lời:
Các số hiệu của 6 phần đầu tiên trong kết nối TCP: 1: số hiệu chuỗi phần 1
2: số hiệu chuỗi phần 1453 3: số hiệu chuỗi phần 2905 4: số hiệu chuỗi phần 4357 5: số hiệu chuỗi phần 5809
6: số hiệu chuỗi phần 7261
HTTP POST segment có các số thứ tự: 22, 23, 25, 26, 28, 29
ACK segment có các số thứ tự: 24, 27, 30, 33, 36, 39
Thời gian gửi ACK RTT
Segment 1 0,315970 0,654932 0,338962 Segment 2 0,315993 0,681107 0,365114 Segment 3 0,655083 1,005242 0,350159 Segment 4 0,655103 1,047355 0,392252 Segment 5 0,681228 1,063670 0,382442 Segment 6 0,681251 1,106774 0,425523
Tính toán giá trị EstimatedRTT :
EstimatedRTT = 0.875 * EstimatedRTT + 0.125 * SampleRTT EstimatedRTT of Segment 1 = 0.338962
EstimatedRTT of Segment 3 = 0.875 * 0.342231 + 0.125 *0.350159 = 0.343222 EstimatedRTT of Segment 4 = 0.875 * 0.343222 + 0.125 *0.392252 = 0.349351 EstimatedRTT of Segment 5 = 0.875 * 0.349351 + 0.125 *0.382442 = 0.353487 EstimatedRTT of Segment 6 = 0.875 * 0.353487 + 0.125 *0.425523 = 0.362492
•Round Trip Time Grap
8. Độ rộng của mỗi một trong số 6 TCP segment đầu tiên là bao nhiêu? Trả lời:
Độ rộng của segment thứ nhất là: 1452 bytes Độ rộng của segment thứ hai là: 1452 bytes Độ rộng của segment thứ ba là: 1452 bytes Độ rộng của segment thứ tư là: 1452 bytes Độ rộng của segment thứ năm là: 1452 bytes
Độ rộng của segment thứ sáu là: 1452 bytes
9. Giá trị nhỏ nhất của không gian đệm có thể ở phần nhận cho toàn bộ trace? Có thể xảy ra sự thiếu không gian đệm vùng nhận khi tắc nghẽn đường gửi không?
Trả lời:
Giá trị nhỏ nhất của không gian đệm có thể ở phần nhận cho toàn bộ trace là 66792 bytes (kích thước của window trong khởi tạo kết nối đầu tiên).
Không xảy ra hiện tượng thiếu không gian đệm vùng đệm nhận khi tắc nghẽn đường gửi . 10. Các segment có được tái truyền đi trong file trace? Bạn kiểm tra cái gì (trong trace) để
trả lời câu hỏi này? Trả lời:
Các segment có thể được tái truyền đi trong file trace. Có thể kiểm tra là 1 số số hiệu chuỗi được gửi đi hai lần hoặc nhiều hơn .
11. Bao nhiêu dữ liệu receiver báo nhận trong ACK? Bạn có thể nhận ra các trường hợp nơi mà receiver đang báo nhận mỗi khi segment khác được nhận không?
Acknowledged sequence number Acknowledged data
Ack 1 1 1452 Ack 2 1453 1452 Ack 3 2905 1452 Ack 4 4357 1452 Ack 5 5809 1452 Ack 6 7261 1452 Ack 7 8713 1452 … … …
12. Lưu lượng (số byte trao đổi mỗi đơn vị thời gian) cho kết nối TCP này là bao nhiêu? Giải thích bạn tính toán giá trị này như thế nào ?
Trả lời:
Lưu lượng trung bình của 1 kết nối = (0,75*W)/RTT W: windown size (bytes)
RTT : round trip time hiện tại (seconds)
Ví dụ: Sử dụng các số liệu ở bài 7, ta có lưu lượng trung bình của kết nối TCP đầu tiên: W = 66792 bytes
RTT = 0,338962 seconds
Lưu lượng trung bình của kết nối TCP = (0,75*66792)/0,338962 = 147786,477 (bytes/sec)
13. Sử dụng công cụ vẽ đồ thị Time-Sequence-Graph (Stevens) để xem số chuỗi trên thời gian vẽ của các segment đang gửi từ client tớ server gaia.cs.umass.edu server. Bạn có thể nhận ra đoạn TCP bắt đầu chậm từ lúc nào tới lúc nào, và nơi nào sự tránh tắc nghẽn đạt được? Dẫn giải con đường mà ở đó dữ liệu được đo khác với hành vi được lý tưởng hóa của TCP, tức thứ mà chúng ta được học trong tài liệu.
Trả lời:
Qua đồ thị Time-Sequence-Graph (Stevens) ta có thể nhận ra đợn TCP bắt đầu chậm và nơi có thể tránh tắc nghẽn. Vì đồ thị chỉ ra sơ đồ trên mạng, những điểm tắc nghẽn có thể xảy ra. Khi TCP kết nối được giữa Sender và Reciever, nó có 1 giá trị duy nhất(chính là windows size),
9. Wireshark Lab : UDP
1. Chọn 1 packet. Từ packet này, xác định có bao nhiêu trường trong UDP header.
Trả lời: 4 fields in UDP header. that is Source Port,Destination Port,Length,CheckSum.
2. Từ trường nội dung packet, xác định độ rộng (byte) của mỗi trường UDP header. Trả lời:
UDP gồm 4 trường, kích thước của mỗi trường:
Source port number: 2 bytes
Destination port number: 2 bytes
Datagram size(Length) : 2 bytes
Checksum : 2 bytes
3. Giá trị trong trường Length là độ dài của cái gì? Xác thực khẳng định của bạn với gói UDP đã bắt.
Trả lời:
Trường Length xác định độ dài của toàn bộ datagram: header và data. Độ dài của trường Length trong trường hợp trên là 37 .
4. Giá trị tối đa các byte có thể bao gồm trong 1 phần tải có ích UDP là bao nhiêu? Trả lời:
Kích thước tối đa của khối dữ liện môi trường hệ thay đổi phụ thuộc vào điều hành. Với trường kích thước 2bytes, kích thước tối đa theo lý thuyết của khối dữ liệu là 65535 ( = 2^16-1) bytes.
5. Số hiệu cổng nguồn lớn nhất có thể là bao nhiêu? Trả lời:
Số hiệu cổng nguồn lớn nhất có thể là 65535( = 2^16-1).
6. Số hiệu giao thức cho UDP là bao nhiêu? Đưa câu trả lời của bạn trong cả hệ 16 và 10. Trả lời:
7. Tìm “UDP” trên Google và xác định các trường trong tính toán UDP checksum. Trả lời
Pseudo Header Field (trường header giả) được sử dụng trong tính tóa UDP checksum, nó bap gồm các trường: the source address, the destination address, the protocol, and the UDP length. Thủ tục checksum cũng tương tự như trong TCP.
8. Khảo sát 1 cặp packet UDP mà ở đó packet đầu được gửi bởi host của bạn và packet sau là phản hồi tới packet đầu. Biểu diễn mối quan hệ giữa số hiệu cổng trong 2 packet đó. Trả lời:
Packet thứ nhất: source port: 1801, Destination port: 53. Packet thứ hai: source port: 53, Destination port is 1801.
9. Câu hỏi thêm:
Bắt 1 gói UDP nhỏ. Xác thực bằng tay checksum trong gói này. Chỉ ra công việc và giải thích tất cả các bước.
• UDP sender:
IP Source Address = 192. 168. 1. 35
Chuyển sang dạng 16 bit = 11000000.10101000.00000001.00100011
IP Destination Address = 192. 168. 1. 1
Chuyển sang dạng 16 bit = 11000000.10101000.00000001.00000001
Protocol: UDP (0×4c9b) = 0100110010011011 UDP Length: 40 = 010000000
Calculated checksum : 11000000 1010100 + 00000001 00100011 11000001 11001011 + 11000000 10101000 110000010 01110011 + 00000001 00000001 110000011 01110100 + 01001100 10011011 111010000 00001111 + 00000000 01000000 111010000 01001111 Lấy phần bù 000101111 10110000 : UDP Sender • UDP Receiver IP Source Address = 192. 168. 1. 1
Chuyển sang dạng 16 bit = 11000000.10101000.00000001.00000001
IP Destination Address = 192. 168. 1. 35
seperate into 16 bit = 11000000.10101000.00000001.00100011
Calculated checksum : 11000000 10101000 + 00000001 00000001 11000001 10101001 + 11000000 10101000 110000010 01010001 + 00000001 00100011 110000011 01110100 + 01001100 10011011 111010000 00001111 + 00000000 01000000 111010000 01001111 : kết quả Receiver + 000101111 01110000 : kết quả Sender 11111111111111111 : Không có lỗi !