5-传输层

传输层

1.概述

主机才会有的层次
功能:

  • 进程与进程之间的逻辑通信
  • 复用和分用
    -复用:应用层所有应用进程都可以通过传输层在传输到网络层
    -分用:传输层从网络层收到数据后交付给指明的应用进程
  • 传输层对收到的报文进行差错检错

两个协议:面向连接的传输控制协议TCP和无连接的用户数据报UDP
传输层寻址与端口
端口号只在本地意义,端口号长度为16bit,表示65536个不同的端口号
服务端使用端口号:
- 熟知端口号:1-1023 给TCP/IP最重要的一些应用程序,让所有用户知道
- 登记端口号:1024-49151为没有熟知端口号的应用程序使用

客户端使用端口号:仅在客户进程时才动态选择的端口号;49152-65535

应用程序FTPTELNETSMTPDNSTFTPHTTPSNMP
熟知端口号212325536980161

套接字Socket=(主机IP地址+端口号)

2.UDP协议

只在IP数据报上增加了复用分用和差错检测功能
特点:

  • 无连接,减少开销和发送数据之前的时延
  • 尽最大努力交付,即不保证可靠交付
  • 面向报文,适合一次性传输少量数据的网络应用,(一次发送一个完整报文)
  • 无拥塞控制,适合很多实时应用(IP电话或视频会议)
  • 首部开销小,8B

UDP长度为整个长度;UDP检验和:检测整个UDP数据报包括数据部分
首部格式
0-------------1516-------------31
—16源端口号----16位目的端口号
-16位UDP长度-----16位UDP检验和
-------------数据---------------

UDP校验:伪首部:源ip地址(4B),目的ip地址(4B),0(1B),协议字段17(1B),UDP长度(2B)
在发送段:1.填上伪首部;2.全0填充检验和字段;3.全0填充数据部分(UDP数据部分是4B的整数倍);4.伪首部+首部+数据部分采用二进制反码求和;5.把和求反码填入检验和字段;6.去掉伪首部,发送
在接收端:1.加伪首部;2.伪首部+首部+数据部分采用二进制反码求和;3.结果全为1则无差错,否则丢弃数据报或上报应用层

3.TCP协议

3.1TCP概述

特点:

  • 面向连接(虚链接)
  • 每一条TCP连接只有两个端点,每一条TCP连接只能是点对点
  • TCP提供可靠交付的服务,无差错、不丢失、不重复、按序到达
  • TCP提供全双工通信:发送缓存:准备发送的数据&已发送但未收到确认的数据;接收缓存:按序到达但尚未接受应用程序读取的数据&不按序到达的数据
  • TCP面向字节流:TCP把应用程序交下来的数据看出一连串的无结构的字节流

首部格式:20B固定+可变+填充。TCP是4B的整数倍
0-----------------------16---------------------31
|--------源端口---------|--------目的端口------|
|-----------------------序 号--------------------|
|-----------------------确认号------------------|
|数据偏移|保留|控制位–|-----窗口--------------|
|-----------检验和------|------紧急指针--------|
|---------选项(可变)--------|-----------填充------|

序号字段(seq):报文中的第一个字节序号
确认号(ack),期望发送方接下来发送的序号,若确认号为N,则N-1之前的数据都已正确收到
数据偏移字段(首部长度):TCP报文段数据起始距离距离TCP报文段的起始处有多远(数据距离),以4B为单位
控制位:

  • URG:紧急位:为1,是高优先级数据,应尽快发送,不用在缓存中排队,配合紧急指针使用
  • ACK:确认位:为1,代表确认号有效,在连接建立后所有传送的报文段都必须把ACK置为1
  • PSH:推送位:为1,会尽快交付,而不用等缓存填满
  • RST:复位:为1,TCP连接出现严重差错,必须释放链接,在重新建立传输链接,同时可以拒绝非法报文段或拒绝打开连接
  • SYN:同部位:为1表明是请求/连接接收报文
  • FIN:终止位:为1,表示此报文段发送方数据已发完,要求释放链接

窗口:指的是发送本报文段的一方的接收窗口,即现在允许对方发送的数据量
检验和:检验首部+数据,检验时加上12B伪首部,第四个字段为6
紧急指针:当URG=1时有效,指出本报文段紧急数据的字节数
选项:最大报文段长度MSS,窗口扩大,时间戳,选择确认…

3.2TCP连接管理

三次握手&四次挥手
三次握手:
1.客户端发送连接请求报文段,无应用层数据(SYN=1,seq=x(随机));
2.服务器返回确认报文段,并为TCP链接分配缓存和变量,无应用层数据(SYN=1,ACK=1,seq=y(随机),ack=x+1)
3.客户端为TCP连接分配缓存和变量,并向服务器端返回确认,可以携带数据(SYN=0,ACK=1,seq=x+1,ack=y+1)

SYN洪泛攻击–设置SYN cookie
四次挥手:任何一个进程都能终止该链接
1.客户端发送释放报文段,停止发送数据,主动关闭TCP连接(FIN=1,seq=u)
2.服务器回收确认报文段(半关闭状态)(ACK=1,seq=v,ack=u+1)
3.服务器发完数据,发送连接释放报文段(FIN=1,ACK=1,seq=w,ack=u+1)
4.客户端回送确认报文段,再等到时间等待计时器设置的2MSL(最长报文段寿命)后,连接彻底关闭(ACK=1,seq=u+1,ack=w+1)

3.3TCP可靠传输

可靠:保证接收方进程从缓存区读出的字节流与发送方发出的字节流是完全一致的
实现可靠传输的机制:1.校验2.序号3.确认4.重传
重传:TCP的发送方在规定的时间段内没有收到确认就要重传已发送的报文段,即超时重传
自适应算法:动态改变重传时间RTTs(加权平均往返时间)
冗余ACK,当期望序号大的失序报文段到达时发送一个冗余ACK,指明下一个期待字节的序号----快速重传

3.4TCP流量控制

利用滑动窗口机制
接收方通过窗口字段rwnd控制,发送方通过接收方rwnd和拥塞窗口cwnd调整
TCP一方接到窗口为0就会启动持续计时器。若持续计时器设置的时间到期,就发送一个零窗口探测报文段,接收方收到后给出当前窗口值,若窗口仍是0,那么发送方重置持续计时器

3.5 TCP拥塞控制

出现拥塞的条件:资源需求的总和>可用资源->网络吞吐量随载入负荷增大而下降
四种算法 慢开始&拥塞避免、快重传&快恢复
假定:1.数据单方向传送,另一个方向只传送确认
2.接收方总是有足够大的缓存空间,因而发送窗口大小取决于拥塞程度

3.5.1 慢开始&拥塞避免

默认cwnd=1,一个报文段,一个最大报文段长度MSS;传输轮次:发送一批报文段并收到它们的确认的时间。
开始是指数规律增长,达到ssthresh(慢开始门限)进入拥塞避免(“加法增大”,线性增长),当检测到网络拥塞,缩小窗口(置为1),重复慢开始阶段(新的门限值为当时出现拥塞时拥塞窗口的1/2)

3.5.2 快重传&快恢复

快重传(详见可靠传输-冗余ACK)后,从新的门限值(同慢开始方法)开始线性增大,TCP Reno版本

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值