您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 【第8章】网络协议栈3 - 传输层协议
网络协议栈3–传输层协议邹昕光哈尔滨工业大学自动化测试与控制研究所2010课程内容UDP协议1TCP协议2ICMP协议3应用层传输层网络层数据链路层物理层UDP数据包结构UDP数据包结构UDP数据包结构UDP数据包结构Source/DestinationPort源/目的端16比特,理论上具有216-1个端口例如:25dnsLengthUDP数据包长度包括UDP包头和载荷16比特,理论上长度为216-1字节UDP数据包结构Checksum可选字段,如果为0,说明不进行校验UDP数据包结构《TCP/IP详解》伪首部pseudo-header计算checksum时不但覆盖了UDP首部,还覆盖了一个pseudo-header;目的是检查数据是否正确到达了目的地,因为UDP首部只有端口号信息;这种设计实际上破坏了TCP/IP分层设计思想。UDP是非连接的协议问题数据包在传输过程中丢失了怎么办?数据包在传输中顺序打乱了怎么办?数据包发送太快,以至于接收端无法及时处理怎么办?RouterRouterRouterRouter321Router123123TCPTCP数据包结构1TCP连接建立和拆除2TCP数据传输3TCP数据包结构TCP数据包结构TCP数据包结构Source/DestinationPort例如:80http,23telnet,21ftp,25smtpSequence/AcknowledgeNumber防止传输过程中数据包的丢失和乱序DataOffsetTCP数据包头长度可变定位TCP封装的数据的位置TCP数据包结构FlagsACK确认标志;表示数据包携带序号确认信息;RST复位标志;表示TCP连接将立刻被拆除;SYN同步序列号标志;使用在TCP连接建立阶段,同步双方的SequenceNumber(ISN);FIN连接拆除标志;在数据传输完毕,双方发送含有该标志的数据包,拆除连接。TCP连接建立(三次握手)SYNSEQ=100SYN+ACKSEQ=300ACK=101ACKSEQ=101ACK=301ACKSEQ=101ACK=301(Data)MyISNPeerISNMyISNPeerISN100100300300DATA为什么是三次握手?ComputerNetworks,FourthEditionTwo-armyproblemTCP连接断开FINSEQ=886ACK=188(Data)ACKSEQ=188ACK=887FINSEQ=188ACK=887ACKSEQ=887ACK=189(Data)ACKSEQ=101ACK=301(Data)……客户端到服务器方向TCP连接关闭服务器到客户端方向TCP连接关闭TCP数据传输选择性确认SelectiveAcknowledgements2可靠传输ReliableTransmission1Nagle算法3可靠传输破坏可靠传输的因素FragmentationDisorderingPacketloss可靠传输3-wayhandshake将通信双方交换了彼此的初始序列号;通过序列号来标识每字节的数据;对正确接收的数据进行确认。CumulativeAcknowledgement客户端发送了4字节数据的数据包,其中TCP包头序列号为100;四个字节序列号分别为100,101,102,103。ACKSEQ=100ACK=301(Data4bytes)ACKSEQ=301ACK=104(Data10bytes)ACKSEQ=104ACK=311MySNPeerSNMySNPeerSN100301104301301100311104104311301104CumulativeAcknowledgement存在的问题如果主机A发送了4个数据包,序列号分别是4000,5000,6000,7000;其中序列号为4000的数据包在传输过程中丢失了,其他数据包顺利到达接收主机B;主机B无法确认序列号分别是5000,6000,7000的包;导致主机A又重新传输这4个包为什么会这样?SelectiveAcknowledge一个TCP选项;接收方请求发送方仅重发丢失数据。【优点】减少重新传输的数据量。Nagle算法观察在一个rlogin或telnet连接上键入一个命令所产生的数据流通常一个按键会产生4个数据包Nagle算法AACKAACK按下字母A键屏幕上显示A服务器回显字母A这也许是个问题。。。如何能有效的利用带宽?【一个思路】一个数据包尽可能携带更多的数据;可以设定一个缓存,当收集到一定数据后再发送出去。【存在问题】如果输入一个字符后,要求对方做出响应,再输入下一个字符,那么。。。(想想gdb调试单字符命令)有没有一种自适应的方法在不同的场合采用不同的传输策略??Nagle算法算法要求一个TCP连接上最多只能有一个未被确认的小分组,在该分组的确认达到之前不能发送其他小分组;当然,当分组长度超过一个门限值时,也发送该分组。Nagle算法对于小分组情况(按键例子),每个按键在接收方确认上一个按键数据包后都会立刻发送出去,保证了实时性;当对方未进行确认,说明对方还没有收到,或者期待更多的数据发送过来;这时不急于发送下一个按键信息,保证了带宽的较高利用率。Nagle算法算法是自适应的确认到达得越快,数据也就发送的越快;而在希望减少微小分组的低速广域网上,由于确认达到的比较慢,则会发送更少的分组,每个分组会携带更多的数据。Nagle算法Nagle算法默认是工作的;在特别重视数据发送的实时性的场合可以关闭Nagle算法。传输层协议比较TCPUDP复杂性复杂简单是否需要建立连接需要不需要是否可解决数据包丢失问题能不能是否可解决数据包乱序问题能不能是否需要对接收数据包进行确认需要不需要能否控制发送端速率能不能传输层协议ICMPInternetControlMessageProtocolICMP(Echo/EchoReply)ICMP数据包结构实例(Echo/EchoReply)ICMP(Echo/EchoReply)Type数据包类型域8echomessage;0echoreplymessageCode代码域0Identifier匹配相应的echo和echoreply信息Sequence匹配相应的echo和echoreply信息ICMP(Echo/EchoReply)Data任何数据,接收到该数据的ping服务器,必须将同样的数据通过echorelpy数据包回应。ICMP(Echo/EchoReply)ICMP(Echo/EchoReply)ICMP(Echo/EchoReply)ICMP(Echo/EchoReply)应用【目标】给一个连网的嵌入式设备配置IP地址;【困难】该嵌入式设备没有输入设备(键盘)没有输出设备(屏幕);该嵌入式设备没有DHCP功能;该嵌入式设备没有TelnetServer功能。ICMP(Echo/EchoReply)应用为物理地址为00-11-22-33-44-55的被控端配置IP地址值192.168.0.18ICMPEchoPacket1执行下面命令arp–s192.168.0.1800-11-22-33-44-552ping192.168.0.183查询arp表,决定目的MAC地址。5被控端提取数据包目的IP地址值,将该值设置为自身的IP地址。4
本文标题:【第8章】网络协议栈3 - 传输层协议
链接地址:https://www.777doc.com/doc-3189774 .html