码迷,mamicode.com
首页 > 其他好文 > 详细

计算机网络-运输层

时间:2019-06-18 21:40:47      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:状态   自己   reset   发送   mda   初始   内容   接受   nbsp   

运输层

位置:面向通信的最高层,面向用户功能的最底层

端到端通信:主机间真正的通信是进程间的通信,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是最长报文段寿命。

计算机网络-运输层

标签:状态   自己   reset   发送   mda   初始   内容   接受   nbsp   

原文地址:https://www.cnblogs.com/liuzey/p/11047797.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!