[关闭]
@perkyoung 2015-07-08T13:55:04.000000Z 字数 2006 阅读 1545

TCP/IP协议-3

运维


运输层简介

向应用层提供服务,同时接受来自网络层的服务。
网络层负责计算机级别的主机到主机之间的通信,运输层负责进程到进程之间的通信。

运输层服务

端口

完成进程到进程之间通信有很多方法,最常见的方法是客户-服务器范式
主机通过ip来定义自己的位置,那进程就通过端口号来定义自己。
客户端的端口号一般为临时端口号,大于1023,小于65535。因为客户端是主动发起请求的一端,请求完毕之后,该端口号就没用了,而在整个请求过程中,这个端口号和服务器的知名端口号进行通信。服务器的端口号不能为临时端口号,因为成千上万个客户端需要请求服务。也有例外,服务器使用临时端口号,那客户进程每次都要发送一个分组来获取这个端口号。
ICANN定义的范围

封装和解封

封装在发送方,解封在接受方。如果接受方需要对收到的报文进行响应,那么发送方的套接字地址也要一起递交给该进程。

复用和分用

客户端的多个不同的进程同时请求服务,这时候运输层就起到了复用器的作用。一台服务器同时收到多个数据包,运输层就起到了分用器的作用,将请求报文交付给不同的进程。

流量控制

发送方的应用层属于生产者,传输层即属于消费者也属于生产者:消费来自应用层的数据,进而分装生产数据包。
一般的流量控制是缓存:接收方和发送方的网络层各有一个缓存,其实就是保存分组的一个存储器。而流量控制的通信可以从消耗者向生产者发送信号来实现。
当发送方的运输层缓存满时,它就通知应用层停止传递报文块,当又有了空位的时候,就通知应用层可以再次传递报文了。接收方的缓存满了,会通知发送方停止,等有空间的时候,会通知发送方继续发送。如果只有一个存储位置,设计起来就很简单,但是效率会很低

差错控制

因为网络层是不可靠的。所以运输层需要加入差错控制来实现其可靠性。序号和确认号
流量控制涉及到了传输层和应用层,但是差错控制只涉及到传输层,因为传输层对上层保证正确。

流量控制和差错控制的组合

当为分组的发送而做准备时候,可疑使用存储器中下一个空白位置的编号x作为该分组的序号。分组一旦被发送,他的一个副本就存在存储器的x位置,直到收到另一端的确认。这个分组副本就会被清除。
在接收方,当序号y的分组到达,知道上层应用层确认接收他,同时发送一个确认分组给发送方。
滑动窗口

拥塞控制

运输层协议

下面从一个简单协议开始,逐渐过度到复杂的UDP/TCP协议。

简单协议

简单协议-1
简单协议-2
一个非常简单的协议:发送方和接收方的运输层处于准备好的状态,当发送方的应用层的一个请求过来,发送方状态机封装成一个分组,然后将这个分组发送给接收方状态机,然后自己再次处于准备好的状态。接收方状态机也总是处于准备好的状态,直到有数据到来,解封数据,交付给上层。
这算是一个简单的协议,没有差错控制,没有流量控制

停止等待协议

面向连接的协议,停止等待协议,这里使用了流量控制和差错控制。
这一章好好看书吧,讲得太精彩了
从简单的无连接的协议,一直分析到了复杂的面向连接的双向通信的协议的

用户数据报协议

UPD就是在IP基础上增加了进程到进程之间的通信,不再是主机到主机的通信,其他的没啥了

UDP服务

无连接的服务
UDP是非连接的,更无法保证有序到达,所以发送的数据报不要太大,这样TCP会分成多个分组出去。使用短报文的推荐使用,起码要小于65507(65535-8个UDP首部-20个IP)。
流量控制
没有,所以有可能会溢出报文(丢了就丢了,反正每个报文之间也没关系)。如果真想做流量控制,那就在进程里面做吧(估计没人这么整)。
差错控制
同上,

传输控制协议TCP

2msl

拥塞控制
慢开始,指数增大,当达到门限值时候,就启动加法增大(拥塞避免算法)。如果发生了拥塞,采用的方法是乘法减小

应用层简介

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注