计算机网络-运输层
Posted liuzey
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机网络-运输层相关的知识,希望对你有一定的参考价值。
运输层
位置:面向通信的最高层,面向用户功能的最底层
端到端通信:主机间真正的通信是进程间的通信,IP层只能送到主机。
复用(multiplexing)和分用(demultiplexing):不同的应用程序可以使用同一个运输层传输,接收方在运输层把数据交给目的进程。
总结:网络层提供主机间的逻辑通信,运输层提供进程之间的逻辑通信。
两大协议:UDP用户数据报协议(User Datagram Protocol)和TCP传输控制协议(Transmission Control Protocol)。
端口:只有本地意义,用来支持复用分用。
端口号分类:熟知端口号(well-known port number)0-1023 登记端口号1024-49151 短暂端口号 49152-65535
UDP
特点:1.无连接(发送前不需要建立连接)2.尽最大努力交付(不可靠)3.面向报文(对于应用层报文不拆分合并)4.没有拥塞控制 5.多对多通信 6.首部短(8字节)
首部格式:原端口+目的端口+长度+校验和(长度2222共8字节)
伪首部:仅在计算检验和时用,原ip+目的IP+0+17+udp长度
检验和计算:首部检验和初始化0,再把首部和伪首部分成16为字串,按二进制反码计算。
TCP
特点:1.面向连接(发送前建立连接)2.可靠交付 3.面向字节流(把应用层数据看成一串无结构字节流)4.全双工(使用缓存实现)5.一对一
套接字socket:IP地址+端口号
TCP连接=socket1+socket2
连续ARQ协议:
发送方每收到一个确认就把发送窗口向前滑动一个分组。接收方采用累积确认的方式(收到了几个分组后发送最后一个分组的确认,表示此分组为止所有的都收到了),发送方采用回退N步 go back n方式。
TCP报文格式:
首部:20字节固定:原端口目的端口,序号(字节流中每一个字节都有序号,首部序号指本报文第一个字节的序号),确认号(希望收到的下一个字节序号,确认号n表示n-1为止的都以收到),数据偏移(单位为4字节,最大值15,表示首部长度),保留,控制位,窗口(以字节为单位,接收方允许对方发送的数据量),检验和,紧急指针,其他
6个控制位:紧急URGent,确认ACKnowledgment(ack=1确认字段有效),推送PuSH,复位ReSet,同步SYNchronization,终止FINis
滑动窗口:
窗口移动状态:不动(没有收到新的确认)和前移(收到新确认)。
窗口内容:已发送并收到确认|窗口后沿|已发送未收到确认|尚未发送|窗口前沿|不允许发送。
缓存内容:发送窗口:准备发送的数据和已发送未收到确认的数据。接收窗口:尚未被应用程序读取的和未按序到达的。
超时重传:发送方在规定时间内没有收到确认则重传。
RTT计算
TCP流量控制:
流量控制就是让对方不要发的太快,让接收方来得及接收。
发送方发送窗口不能超过接收方给出的接收窗口的数值。
为了防止rwnd=0后窗口增大的报文丢失导致的死锁,TCP设置持续计数器,只要收到零窗口通知就启动计数器,计数器到时后发送零窗口探测报文(tcp规定即使是零窗口也必须接受零窗口检测报文、确认报文和紧急数据报文)。
TCP拥塞控制:
方法:慢开始、拥塞避免、快重传、快恢复
TCP连接管理:
连接的三个阶段:连接建立、数据传送、连接释放。
主动发起连接的叫做客户(client),被动等待建立的应用进程叫服务器(server)
连接建立:三报文握手
起始双方都处于关闭状态
1.客户端创建传输控制模块,发送请求报文(SYN=1,同时选择初始序号seq=x,tcp规定SYN报文不能携带数据,但要消耗一个序号),这时客户端进入SYN—SENT(同步已发送)状态。
2.服务端收到请求后,同意建立连接,发送确认(SYN=1,ACK=1,确认号是x+1,同时为自己选择起始序号seq=y),服务器进入SYN—RCVD(同步收到)状态。
3.客户端收到确认后向服务端发送确认,自己进入established状态,确认报文ack=1,确认号y+1.自己的序号seq=x+1,服务器收到后也进入established状态。
连接释放:四报文握手
1.客户端发送fin=1(fin不携带数据也要消耗掉一个序号)。
2.服务端收到后发送确认(ACK=1)现在TCP连接处于半关闭状态,客户端到服务端的通信断开,服务端到客户端的通信保持。
3.服务端发出FIN=1,ack等于上次的ack(因为没有收到数据)。
4.客户端收到后发出确认ACK=1.
然后TCP连接经过时间等待计时器设置的2msl后客户端进入关闭状态,MSL是最长报文段寿命。
以上是关于计算机网络-运输层的主要内容,如果未能解决你的问题,请参考以下文章