《网络协议栈3---传输层协议课件.ppt》由会员分享,可在线阅读,更多相关《网络协议栈3---传输层协议课件.ppt(39页珍藏版)》请在三一办公上搜索。
1、网络协议栈3 传输层协议,邹昕光哈尔滨工业大学自动化测试与控制研究所2010,课程内容,UDP协议,1,TCP协议,2,ICMP协议,3,应用层,传输层,网络层,数据链路层,物理层,UDP数据包结构,UDP数据包结构,UDP数据包结构,UDP数据包结构,Source/Destination Port 源/目的端16比特,理论上具有216-1个端口例如:25 dnsLengthUDP数据包长度包括UDP包头和载荷16比特,理论上长度为216-1字节,UDP数据包结构,Checksum可选字段,如果为0,说明不进行校验,UDP数据包结构 TCP/IP详解,伪首部 pseudo-header计算ch
2、ecksum时不但覆盖了UDP首部,还覆盖了一个pseudo-header;目的是检查数据是否正确到达了目的地,因为UDP首部只有端口号信息;这种设计实际上破坏了TCP/IP分层设计思想。,UDP是非连接的协议,问题数据包在传输过程中丢失了怎么办?数据包在传输中顺序打乱了怎么办?数据包发送太快,以至于接收端无法及时处理怎么办?,TCP,TCP数据包结构,TCP数据包结构,TCP数据包结构,Source/Destination Port例如:80 http,23 telnet,21 ftp,25 smtpSequence/Acknowledge Number防止传输过程中数据包的丢失和乱序Dat
3、a Offset TCP数据包头长度可变定位TCP封装的数据的位置,TCP数据包结构,FlagsACK 确认标志;表示数据包携带序号确认信息;RST 复位标志;表示TCP连接将立刻被拆除;SYN 同步序列号标志;使用在TCP连接建立阶段,同步双方的Sequence Number(ISN);FIN 连接拆除标志;在数据传输完毕,双方发送含有该标志的数据包,拆除连接。,TCP连接建立(三次握手),My ISN,Peer ISN,My ISN,Peer ISN,100,100,300,300,DATA,为什么是三次握手?Computer Networks,Fourth Edition,Two-arm
4、y problem,TCP连接断开,客户端到服务器方向TCP连接关闭,服务器到客户端方向TCP连接关闭,TCP数据传输,可靠传输,破坏可靠传输的因素FragmentationDisorderingPacket loss,可靠传输,3-way handshake将通信双方交换了彼此的初始序列号;通过序列号来标识每字节的数据;对正确接收的数据进行确认。,Cumulative Acknowledgement,客户端发送了4字节数据的数据包,其中TCP包头序列号为100;四个字节序列号分别为100,101,102,103。,My SN,Peer SN,My SN,Peer SN,100 301,104
5、 301,301 100,311 104,104 311,301 104,Cumulative Acknowledgement,存在的问题如果主机A发送了4个数据包,序列号分别是4000,5000,6000,7000;其中序列号为4000的数据包在传输过程中丢失了,其他数据包顺利到达接收主机B;主机B无法确认序列号分别是5000,6000,7000的包;导致主机A又重新传输这4个包,为什么会这样?,Selective Acknowledge,一个TCP 选项;接收方请求发送方仅重发丢失数据。【优点】减少重新传输的数据量。,Nagle算法,观察在一个rlogin或telnet连接上键入一个命令所
6、产生的数据流通常一个按键会产生4个数据包,Nagle算法,按下字母A键,屏幕上显示A,服务器回显字母A,这也许是个问题。,如何能有效的利用带宽?【一个思路】一个数据包尽可能携带更多的数据;可以设定一个缓存,当收集到一定数据后再发送出去。【存在问题】如果输入一个字符后,要求对方做出响应,再输入下一个字符,那么。(想想gdb调试单字符命令),Nagle算法,算法要求一个TCP连接上最多只能有一个未被确认的小分组,在该分组的确认达到之前不能发送其他小分组;当然,当分组长度超过一个门限值时,也发送该分组。,Nagle算法,对于小分组情况(按键例子),每个按键在接收方确认上一个按键数据包后都会立刻发送出
7、去,保证了实时性;当对方未进行确认,说明对方还没有收到,或者期待更多的数据发送过来;这时不急于发送下一个按键信息,保证了带宽的较高利用率。,Nagle算法,算法是自适应的确认到达得越快,数据也就发送的越快;而在希望减少微小分组的低速广域网上,由于确认达到的比较慢,则会发送更少的分组,每个分组会携带更多的数据。,Nagle算法,Nagle算法默认是工作的;在特别重视数据发送的实时性的场合可以关闭Nagle算法。,传输层协议比较,传输层协议 ICMP,Internet Control Message Protocol,ICMP(Echo/Echo Reply),ICMP数据包结构实例(Echo/E
8、cho Reply),ICMP(Echo/Echo Reply),Type 数据包类型域 8 echo message;0 echo reply messageCode 代码域0Identifier 匹配相应的echo和echo reply信息Sequence匹配相应的echo和echo reply信息,ICMP(Echo/Echo Reply),Data任何数据,接收到该数据的ping服务器,必须将同样的数据通过echo relpy数据包回应。,ICMP(Echo/Echo Reply),ICMP(Echo/Echo Reply),ICMP(Echo/Echo Reply),ICMP(Echo/Echo Reply)应用,【目标】给一个连网的嵌入式设备配置IP地址;【困难】该嵌入式设备没有输入设备(键盘)没有输出设备(屏幕);该嵌入式设备没有DHCP功能;该嵌入式设备没有Telnet Server功能。,ICMP(Echo/Echo Reply)应用,为物理地址为00-11-22-33-44-55的被控端配置IP地址值192.168.0.18,