本文主要是介绍计算机网络5:运输层,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
概述
进程间基于网络的通信
计算机网络中实际进行通信的真正实体,是位于通信两端主机中的进程。
如何为运行在不同主机上的应用进程提供直接的逻辑通信服务,就是运输层的主要任务。运输层协议又称为端到端协议。
运输层向应用层实体屏蔽了下面网络核心的细节(例如网络拓扑、所采用的路由选择协议等),它使应用进程看见的就好像是在两个运输层实体之间有一条端到端的逻辑通信信道。
根据应用需求的不同,因特网的运输层为应用层提供了两种不同的运输层协议,即面向连接的TCP和无连接的UDP,这两种协议就是本章要讨论的主要内容。
TCP和UDP
端口号
注意:这里的“端口”并不是看得见、摸得着的物理端口,而是用来区分不同应用进程的标识符。
UDP和TCP的对比
TCP
TCP的全部功能需要依靠其首部中的各字段来实现。
保留占6比特,全0,以后使用
标志位:
三报文握手
四报文挥手
此时处于半关闭状态
否则:
流量控制
TCP为应用程序提供了流量控制(Flow Control)机制,以解决因发送方发送数据太快而导致接收方来不及接收,造成接收方的接收缓存溢出的问题。
流量控制的基本方法:接收方根据自己的接收能力(接收缓存的可用空间大小)控制发送方的发送速率。
TCP规定:即使接收窗口值为0,也必须接受零窗口探测报文段、确认报文段以及携带有紧急数据的报文段。
零窗口探测报文段也有重传计时器, 当重传计时器超时后,零窗口探测报文段会被重传。
拥塞控制
慢开始+拥塞避免
“慢开始”是指一开始向网络注入的报文段少,而并不是指拥塞窗口cwnd的值增长速度慢。
“拥塞避免”也并非指完全能够避免拥塞,而是指在拥塞避免阶段将cwnd值控制为按线性规律增长,使网络比较不容易出现拥塞。
快重传和快恢复算法
“快重传”是指使发送方尽快(尽早)进行重传,而不是等重传计时器超时再重传。
对于个别丢失的报文段,发送方不会出现超时重传,也就不会误认为出现了拥塞而错误地把拥塞窗口cwnd的值减为1。实践证明,使用快重传可以使整个网络的吞吐量提高约20%。
这些都是在变更拥塞门限ssthresh,拥塞窗口cwnd,但真正发的是发送窗口,它还要考虑接收窗口的大小。
可靠传输的实现
TCP的滑动窗口以字节为单位
超时重传时间的选择
往返时间RTT的测量是比较复杂的.
报文段每重传一次,就把RTO增大一些。典型的做法是将新RTO的值取为旧RTO的2倍。
报文段发生重传,就不采用RTT样本计算RTO,而是把RTO增大一些。典型的做法是将新RTO的值取为旧RTO的2倍。
选择确认
在之前介绍TCP的快重传和可靠传输时,TCP接收方只能对按序收到的数据中的最高序号给出确认。当发送方超时重传时,接收方之前已收到的未按序到达的数据也会被重传。
能否设法只传送缺少的数据而不重传已经正确到达、只是未按序到达的数据呢?
TCP可以使用选择确认(Selective ACK,SACK)[RFC 2018](建议标准)
SACK相关文档并没有指明发送方应当怎样响应SACK。因此大多数的TCP实现还是重传所有未被确认的数据块。
这篇关于计算机网络5:运输层的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!