• 报文被拆分为多个分组发送


    TCP 是一种字节流(byte-stream)协议,流的含义是没有固定的报文边界。
    假设你调用 2 次 write 函数往 socket 里依次写 500 字节、800 字节。write 函数只是把字节拷贝到内核缓冲区,最终会以多少条报文发送出去是不确定的,如下图所示:
    情况 1:分为两条报文依次发出去 500 字节 和 800 字节数据,也有
    情况 2:两部分数据合并为一个长度为 1300 字节的报文,一次发送
    情况 3:第一部分的 500 字节与第二部分的 500 字节合并为一个长度为 1000 字节的报文,第二部分剩下的 300 字节单独作为一个报文发送
    情况 4:第一部分的 400 字节单独发送,剩下100字节与第二部分的 800 字节合并为一个 900 字节的包一起发送。
    情况 N:还有更多可能的拆分组合
    上面出现的情况取决于诸多因素:路径最大传输单元 MTU、发送窗口大小、拥塞窗口大小等。
    当前mtu:node1:/root#ifconfig -a
    eth1      Link encap:Ethernet  HWaddr 00:0C:29:F2:0E:05  
              inet addr:192.168.137.2  Bcast:192.168.137.255  Mask:255.255.255.0
              UP BROADCAST RUNNING MULTICAST  MTU:296  Metric:1
    		  
    
    
    一次收到了257的长度:
    
    node1:/root#tcpdump -S -i eth1 '((tcp) and  (port 8080) )'
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
    
    
    01:01:20.627525 IP 192.168.137.1.61583 > node1.webcache: Flags [S], seq 2023737918, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
    01:01:20.627568 IP node1.webcache > 192.168.137.1.61583: Flags [S.], seq 4074660050, ack 2023737919, win 2560, options [mss 256,nop,nop,sackOK,nop,wscale 6], length 0
    01:01:20.627743 IP 192.168.137.1.61583 > node1.webcache: Flags [.], ack 4074660051, win 16482, length 0
    
    01:01:20.628887 IP 192.168.137.1.61583 > node1.webcache: Flags [P.], seq 2023737919:2023738176, ack 4074660051, win 16482, length 257
    01:01:20.628914 IP node1.webcache > 192.168.137.1.61583: Flags [.], ack 2023738176, win 49, length 0
    01:01:20.630216 IP 192.168.137.1.61583 > node1.webcache: Flags [F.], seq 2023738176, ack 4074660051, win 16482, length 0
    01:01:20.646496 IP node1.webcache > 192.168.137.1.61583: Flags [F.], seq 4074660051, ack 2023738177, win 49, length 0
    01:01:20.646634 IP 192.168.137.1.61583 > node1.webcache: Flags [.], ack 4074660052, win 16482, length 0
    
    
    发送方:
    C:Python27python.exe C:/Users/TLCB/PycharmProjects/untitled2/http/t2.py
    ('192.168.137.1', 61605)
    ('192.168.137.2', 8080)
    1552
    
    
    		  
    		  
    		  
    01:02:49.194289 IP 192.168.137.1.61605 > node1.webcache: Flags [S], seq 1138731431, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
    01:02:49.194334 IP node1.webcache > 192.168.137.1.61605: Flags [S.], seq 1198709260, ack 1138731432, win 2560, options [mss 256,nop,nop,sackOK,nop,wscale 6], length 0
    01:02:49.194460 IP 192.168.137.1.61605 > node1.webcache: Flags [.], ack 1198709261, win 16482, length 0
    
    01:02:49.195321 IP 192.168.137.1.61605 > node1.webcache: Flags [.], seq 1138731432:1138731968, ack 1198709261, win 16482, length 536
    01:02:49.195338 IP 192.168.137.1.61605 > node1.webcache: Flags [.], seq 1138731968:1138732504, ack 1198709261, win 16482, length 536
    
    01:02:49.195406 IP node1.webcache > 192.168.137.1.61605: Flags [.], ack 1138731968, win 57, length 0
    01:02:49.195513 IP node1.webcache > 192.168.137.1.61605: Flags [.], ack 1138732504, win 74, length 0
    
    01:02:49.195553 IP 192.168.137.1.61605 > node1.webcache: Flags [P.], seq 1138732504:1138732984, ack 1198709261, win 16482, length 480
    01:02:49.195571 IP node1.webcache > 192.168.137.1.61605: Flags [.], ack 1138732984, win 91, length 0
    01:02:49.196360 IP 192.168.137.1.61605 > node1.webcache: Flags [F.], seq 1138732984, ack 1198709261, win 16482, length 0
    01:02:49.198308 IP node1.webcache > 192.168.137.1.61605: Flags [F.], seq 1198709261, ack 1138732985, win 91, length 0
    01:02:49.198490 IP 192.168.137.1.61605 > node1.webcache: Flags [.], ack 1198709262, win 16482, length 0
    
    发送了1552长度额数据:
    
    分为3次发:
    
    01:02:49.195321 IP 192.168.137.1.61605 > node1.webcache: Flags [.], seq 1138731432:1138731968, ack 1198709261, win 16482, length 536
    01:02:49.195338 IP 192.168.137.1.61605 > node1.webcache: Flags [.], seq 1138731968:1138732504, ack 1198709261, win 16482, length 536
    
    01:02:49.195553 IP 192.168.137.1.61605 > node1.webcache: Flags [P.], seq 1138732504:1138732984, ack 1198709261, win 16482, length 480
    
    
    		  
  • 相关阅读:
    了解WP的传感器
    载入条LoadingBar
    能分组的GridView
    ASP.NET MVC的过滤器
    ASP.NET的路由
    自己绘制的仪表盘
    可拖拽的ListBox
    自己绘制的滑块条
    利用mciSendString播放音频
    mis导入器的加强版——vdproj文件资源浏览器
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13348507.html
Copyright © 2020-2023  润新知