本文主要是介绍Unix网络编程:第二章 传输层:TCP、UDP和SCTP,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
第二章 传输层:TCP、UDP和SCTP
2.1 概述
UDP是一个简单的、不可靠的数据报协议
TCP是一个复杂、可靠的字节流协议。
SCTP与TCP类似,是可靠传输协议,但它还提供消息边界、传输级别多宿(multihoming)支持以及将头端阻塞(head-of-line blocking)减少到最小的一种方法。
我们必须了解由这些传输层协议提供给应用进程的服务,这样才能弄清这些协议处理什么,应用进程中又需要处理什么。
TCP的某些特性一旦理解,就很容易编写健壮的客户和服务器程序,也很容易使用诸如netstat等普遍可用的工具来调试客户和服务器程序。
本章主题:
TCP的三路握手
TCP的连接终止序列和TCP的TIME_WAIT状态
SCTP的四路握手和SCTP的连接终止
由套接字提供的TCP、UDP和SCTP缓冲机制
2.2 总图
IPv4 网际协议版本4
IPv6 网际协议版本6.其主要变化是使用128位更大地址以应对因特网的爆发性增长。
TCP 传输控制协议。面向连接,为用户进程提供可靠的全双工字节流。流套接字,关系确认、超 时和重传之类的细节。
UDP 用户数据报协议。无连接协议。数据报套接字。UDP数据报不能保证最终到达它们的目的地。
SCTP 流控制传输协议。
ICMP 网际控制消息协议。ICMP处理在路由器和主机之间流通的错误和控制信息。
IGMP 网际组管理协议。IGMP用于多播。
ARP 地址解析协议。ARP把一个IPv4地址映射成一个硬件地址。
RARP 反向地址解析协议。RARP把一个硬件地址映射成一个IPv4地址。
ICMPv6 网际控制消息协议版本6.
BPF BSD分组过滤器。该接口提供对于数据链路层的访问能力。
DLPI 数据局链路提供者接口。该接口也提供对于数据链路层的访问能力。
2.3 用户数据报协议(UDP)
UDP是一个简单的传输层协议。
应用进程王一个UDP套接字写入一个消息,该消息随后被封装到一个UDP数据报。
该UDP数据报进而又被封装到一个IP数据报,然后发送到目的地。
UDP不保证UDP数据报会到达其最终目的地,不保证各个数据报的先后顺序跨网络后保持不变,也不保证每个数据报只到达一次。
如果想要确保一个数据报到达其目的地,可以往应用程序中添置一大堆的特性:来自对端的确认、本端的超时和重传等。
每个UDP数据报都有一个长度。如果一个数据报正确地到达其目的地,那么该数据报的长度将随数据一道传递给接收端应用进程。TCP是字节流协议,没有任何记录边界,与UDP不同。
UDP提供无连接的服务,因为UDP客户与服务器之间不必存在任何长期的关系。
2.4 传输控制协议(TCP)
首先,TCP提供客户与服务器之间的连接。TCP客户先与某个个定服务器建立一个连接,再跨该连接与那个服务器交换数据,然后终止连接。
其次,TCP提供了可靠性。当TCP向另一端发送数据时,它要求对端返回一个确认。如果没有收到确认,TCP就自动重传数据并等待更长时间。在数次重传失败后,TCP才放弃。
注意:TCP并不保证数据一定会被对方端点接收,因为这是不可能做到的。如果有可能,TCP就把数据递送到对方端点,否则就(通过放弃重传并中断连接)通知用户。这么说来,TCP也不能被描述成是100%可靠的协议,它提供的是数据的可靠递送或故障的可靠通知。
TCP含有用于动态估算客户和服务器之间的往返时间的算法,以便它知道等待一个确认需要多少时间。
TCP通过给其中每个字节关联一个序列号对所发送的数据进行排序。
举例来说,假设一个应用写2048字节道一个TCP套接字,导致TCP发送2个分节:两个分节所含数据的序列号分别为1~1024,1025~2048.(分节是TCP传递给IP的数据单元)
如果这些分节非顺序到达,接收端TCP将先根据它们的序列号重新排序,再把结果数据传递给接收应用。
如果接收端TCP接收到来自对端的重复数据(譬如说对端认为一个分节已丢失并因此重传,而这个分节并没有真正丢失,只是网络通信过于拥挤),它可以(根据序列号)判定数据是重复的,从而丢弃重复数据。
再次,TCP提供流量控制。TCP总是告知对端在任何时刻它一次能够从对端接收多少字节的数据(通告窗口)。在任何时刻,该窗口指出接收缓冲区中当前可用的空间量,从而确保发送端发送的数据不会使接收缓冲区溢出。该窗口时刻动态变化。
最后,TCP连接是全双工的。这意味着在一个给定的连接上应用可以在任何时刻在进出两个方向上既发送数据又接收数据。因此,TCP必须为每个数据流方向跟踪诸如序列号和通告窗口大小等状态信息。
这篇关于Unix网络编程:第二章 传输层:TCP、UDP和SCTP的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!