所属分类:php教程
tcp和udp属于“传输层”协议。UDP和TCP是计算机传输层中重要的协议,TCP是面向连接的,UDP是面向无连接的。TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。UDP(用户数据报协议)为应用程序提供了一种无需建立连接就可以发送封装的IP数据包的方法。
php入门到就业线上直播课:进入学习
API 文档、设计、调试、自动化测试一体化协作工具:点击使用
本教程操作环境:windows7系统、Dell G3电脑。
计算机网络体系结构是指计算机网络层次结构模型,它是各层的协议以及层次之间的端口的集合。在计算机网络中实现通信必须依靠网络通信协议,广泛采用的是国际标准化组织(ISO)1997年提出的开放系统互联(Open System Interconnection,OSI)参考模型,习惯上称为ISO/OSI参考模型。
OSI七层参考模型:
OSI从逻辑上,把一个网络系统分为功能上相对独立的7个有序的子系统,这样OSI体系结构就由功能上相对独立的7个层次组成,如下图所示。它们由低到高分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
TCP/IP参考模型
TCP/IP共有4个层次,它们分别是网络接口层、网际层、传输层和应用层。TCP/IP层次结构与OSI层次结构的对照关系如下图所示。
tcp和udp属于计算机网络体系结构的“传输层”协议。
Internet 的传输层有两个主要协议,互为补充。无连接的是 UDP,它除了给应用程序发送数据包功能并允许它们在所需的层次上架构自己的协议之外,几乎没有做什么特别的事情。面向连接的是 TCP,该协议几乎做了所有的事情。
运输层是整个网络层体系机构中的关键词层次之一,网络层只是把分组发送到目的主机,但是真正通信的并不是主机而是主机中的进程。运输层是向他上面的应用层提供通信服务,它属于面向通信的最高层,当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时,只有主机的协议栈才有传输层,传输层提供了进程间的逻辑通信,传输层向高层用户屏蔽了下面网络层的核心细节,使应用程序看起来像是在两个传输层实体之间有一条端到端的逻辑通信信道;
IP分组虽然能把分组送到送到目的主机,但是这个分组还停留在主机的网络层而没有交付给主机中的应用进程,在两个计算机通信过程中,实际上是这个主机的一个进程和另一个主机中的 进程在交换数据。从传输层看,通信的额真正端点并不是主机而是主机中的进程,也就说,端到端的通信时应用进程之间的通信。
运输层的两个重要功能:
网络层和运输层的区别:网络层是为主机之间提供逻辑通信,而运输层为应用程序直接提供端到端的逻辑通信;
UDP和TCP是计算机传输层中重要的协议,TCP是面向连接的,UDP是面向无连接的;
TCP/IP层中的运输层用一个16位的端口号来表示一个端口,端口号只有本地意义,是为了标志计算机应用层中的各个进程和运输层中交互之间的层间接口,不同的网络号之间的端口号是没有关联的;因此,两个计算机之间的进程要进行相互通信,就必须知道对方的IP地址(为了找到对方的计算机)和端口号(为了找到计算机中的进程),因特网上的通信采用客户端-服务器的方式,客户在发起通信请求时,必须先知道对方服务器的IP地址和端口号。
用户数据报协议只在IP报文上增加了一个复用、分用以及差错检测的功能。
1. UDP的特点
2. UDP报文
首部字段只有 8 个字节,包括源端口、目的端口、长度、检验和。12 字节的伪首部是为了计算检验和临时添加的。
传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。
TCP:用户报文协议,面向连接,在传输数据之前必须先建立连接,数据传输结束之后释放连接,TCP不提供广播或多播服务。
1. TCP特点
2. TCP的连接
TCP连接的不是两个主机号,也不是端口号,而是套接字:
socket = IP地址:端口号
3. TCP报文段首部格式
4. TCP三次握手
假设 A 为客户端,B 为服务器端。
5. TCP四次挥手
以下描述不讨论序号和确认号,因为序号和确认号的规则比较简单。并且不讨论 ACK,因为 ACK 在连接建立之后都为 1。
四次挥手的原因
客户端发送了 FIN 连接释放报文之后,服务器收到了这个报文,就进入了 CLOSE-WAIT 状态。这个状态是为了让服务器端发送还未传送完毕的数据,传送完毕之后,服务器会发送 FIN 连接释放报文。
TIME_WAIT
客户端接收到服务器端的 FIN 报文后进入此状态,此时并不是直接进入 CLOSED 状态,还需要等待一个时间计时器设置的时间 2MSL。这么做有两个理由:
TCP使用超时重传来实现可靠传输,如果一个已经发送给的报文段在超时间内没有收到确认,那么就重传这个报文段;
1. TCP滑动窗口
窗口是缓存的一部分,用来暂时存放字节流。发送方和接收方各有一个窗口,接收方通过 TCP 报文段中的窗口字段告诉发送方自己的窗口大小,发送方根据这个值和其它信息设置自己的窗口大小。
发送窗口内的字节都允许被发送,接收窗口内的字节都允许被接收。如果发送窗口左部的字节已经发送并且收到了确认,那么就将发送窗口向右滑动一定距离,直到左部第一个字节不是已发送并且已确认的状态;接收窗口的滑动类似,接收窗口左部字节已经发送确认并交付主机,就向右滑动接收窗口。
接收窗口只会对窗口内最后一个按序到达的字节进行确认,例如接收窗口已经收到的字节为 {31, 34, 35},其中 {31}按序到达,而 {34, 35} 就不是,因此只对字节 31 进行确认。发送方得到一个字节的确认之后,就知道这个字节之前的所有字节都已经被接收。
2. TCP流量控制
TCP上的流量控制就是通过滑动窗口实现,一般来说,都是希望发送方发送的数据越快越好,但是发送方发送的数据过快会导致接收方来不及接受,因此就需要控制发送方的流量,TCP上的流量控制主要是通过设置滑动窗口大小实现,接收方发送的确认报文中的窗口字段可以用来控制发送方窗口大小,从而影响发送方的发送速率。将窗口字段设置为0,则发送方不能发送数据。
3. TCP拥塞控制
如果网络出现拥塞,分组将会丢失,此时发送方会继续重传,从而导致网络拥塞程度更高。因此当出现拥塞时,应当控制发送方的速率。这一点和流量控制很像,但是出发点不同。流量控制是为了让接收方能来得及接收,而拥塞控制是为了降低整个网络的拥塞程度。
拥塞控制条件:
拥塞控制和流量控制不同:拥塞控制是防止过多的数据注入到网络中,这样使网络中的路由器或链路不至于过载,拥塞控制是一个全局的过程,设计到所有的主机所有的路由器,以及与降低网络性能相关的所有的元素,但是,流量控制往往是点对点通信量的控制,是个端到端的问题,要注意区分;
TCP中拥塞控制的主要算法:慢开始、拥塞避免、快重传、快恢复
发送方需要维护一个叫做拥塞窗口(cwnd)的状态变量,注意拥塞窗口与发送方窗口的区别:拥塞窗口只是一个状态变量,实际决定发送方能发送多少数据的是发送方窗口。
为了便于讨论,做如下假设:
虽然 TCP 的窗口基于字节,但是这里设窗口的大小单位为报文段。
1. 慢开始与拥塞避免
发送的最初执行慢开始,令 cwnd = 1,发送方只能发送 1 个报文段;当收到确认后,将 cwnd 加倍,因此之后发送方能够发送的报文段数量为:2、4、8 …
注意到慢开始每个轮次都将 cwnd 加倍,这样会让 cwnd 增长速度非常快,从而使得发送方发送的速度增长速度过快,网络拥塞的可能性也就更高。
设置一个慢开始门限 ssthresh,当 cwnd >= ssthresh 时,进入拥塞避免,每个轮次只将 cwnd 加 1。
如果出现了超时,则令 ssthresh = cwnd / 2,然后重新执行慢开始。
2. 快重传与快恢复
在接收方,要求每次接收到报文段都应该对最后一个已收到的有序报文段进行确认。例如已经接收到 M1 和 M2,此时收到 M4,应当发送对 M2 的确认。
在发送方,如果收到三个重复确认,那么可以知道下一个报文段丢失,此时执行快重传,立即重传下一个报文段。例如收到三个 M2,则 M3 丢失,立即重传 M3。
在这种情况下,只是丢失个别报文段,而不是网络拥塞。因此执行快恢复,令 ssthresh = cwnd / 2 ,cwnd =ssthresh,注意到此时直接进入拥塞避免。
慢开始和快恢复的快慢指的是 cwnd 的设定值,而不是 cwnd 的增长速率。慢开始 cwnd 设定为 1,而快恢复 cwnd设定为 ssthresh。
参考文献:计算机网络第五版谢希仁编著
(学习视频分享:web前端入门)
以上就是tcp和udp属于计算机网络体系结构的什么协议的详细内容,更多请关注zzsucai.com其它相关文章!