计算机网路重要知识清单:传输层

传输层概述

传输层是只有主机才有的层次,为应用层提供通信服务,使用网络层的服务。

传输层的功能:

1.传输层提供进程和进程之间的逻辑通信。(网络层是主机和主机间的逻辑通信)

2.复用和分用:复用是指发送方不同的进程都可以使用同一个传输层的协议来传输数据;而分用指得是传输层在接收这些数据后能够送给正确的进程。

3.传输层对收到的报文进行差错检测。(网络层的首部校验和只是校验了首部,没有校验数据部分;所以数据部分的检错需要传输层来做)  传输层+网络层的差错检测就可以实现可靠传输

4.传输层的两种协议:TCP、UDP

传输层的两个协议

面向连接的传输控制协议TCP

传送数据之前必须建立连接,数据传送结束后要释放连接。不提供广播或多播服务。由于TCP要提供可靠的面向连接的传输服务,因此不可避免增加了许多开销:确认、流量控制、计时器及连接管理等

可靠,面向连接,时延大,使用于大文件

无连接的用户数据报协议UDP

传送数据之前不需要建立连接,收到UDP报文后也不需要给出任何确认。

不可靠,无连接,时延小,使用于小文件。

传输层的寻址与端口

复用:应用层所有的应用进程都可以通过传输层再传输到网络层

分用:传输层从网络层收到数据后交付指明的应用进程

端口是传输层的SAP,标识主机中的应用进程(逻辑端口/软件端口)

端口号只有本地意义,在因特网中不同计算机的相同端口是没有联系的。

端口号长度为16bit,能表示65536个不同的端口号

在网络中采用发送方和接收方的套接字组合识别端点,套接字唯一标识了网络中的一个主机和它上面的一个进程

Socket=(主机IP地址,端口号)

UDP协议

UDP只在IP数据报服务之上增加了很少功能,即复用分用和差错检测功能。

UDP的主要特点:

1.UDP是无连接的,减少开销和发送数据之前的时延。

2.UDP使用最大努力交付,即不保证可靠交付  (应用层来保证可靠交付)

3.UDP是面向报文的(对应用层传下来的报文不做任何处理),适合一次性传输少量数据的网络应用。

4.UDP无拥塞控制,适合很多实时应用。

5.UDP首部开销小,8B,TCP是20B

UDP首部格式

分用时,找不到对应的目的端口号,就丢弃报文,并给发送方发送ICMP“端口不可达”差错报告报文

UDP校验

伪首部只有在计算校验和时才会出现,不向下传送也不向上递交。

17:封装UDP报文的IP数据报首部协议字段是17

UDP长度:UDP首部8B+数据部分长度(不包括伪首部)

TCP协议

特点:

1.TCP是面向连接(虚连接)的传输层协议面向连接是指应用程序在使用TCP协议前必须先建立TCP的连接,传输数据完毕后再释放连接。 虚连接:并不是实际的物理连接,因为实际上连接过程是把数据报加上各个层次的首部后放到链路上传输然后在接收端一步步解封装。但TCP连接的使用像是两个进程建立一个点对点连接,像是进程和进程直接连接在一起的。

2.每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的。(不能广播,多播)

3.TCP提供可靠交付的服务,无差错、不丢失、不重复、按序到达。可靠有序,不丢不重

4.TCP提供全双工通信。 由于全双工的特点,所以发送方和接收方都有发送缓存和接收缓存

发送缓存:准备发送的数据&已经发送但尚未收到确认的数据

接收缓存:按序到达但尚未被接收应用程序读取的数据 & 不按序到达的数据

5.TCP面向字节流:TCP把应用程序交下来的数据看成仅仅是一连串的无结构的字节流

流:流入到进程或从进程流出的字节序列。

TCP报文段首部格式

序号seq在一个TCP连接中传送的字节流中的每一个字节都按顺序编号,本字段表示本报文段所发送数据的第一个字节的序号

确认号ack:期望收到对方下一个报文段的第一个数据字节的序号。若确认号为N,则证明到序号N-1为止的所有数据都已正确收到。

数据偏移首部长度):TCP报文段的数据起始处距离TCP报文段的起始处有多远,以4B位单位,即1个数值是4B

紧急位URG:URG=1时,标明此报文段中有紧急数据,是高优先级的数据,应尽快传送,不用在缓存里排队,配合紧急指针字段使用

确认位ACK:ACK=1时确认号有效,在连接建立后所有传送的报文段都必须把ACK置为1

推送位PSH:PSH=1时,接收方尽快交付接收应用进程,不再等到缓存填满再向上交付。

复位RST:RST=1时,标明TCP连接中出现严重差错,必须释放连接,然后再重新建立传输链接。

同步位SYN: SYN=1时,标明是一个连接请求/连接接受报文。

终值位FIN:FIN=1时,表明此报文段发送方数据已发完,要求释放连接。

窗口:指得是发送本报文段的一方的接收窗口,即现在准许对方发送的数据量。

校验和:检验首部+数据,检验时要加上12B伪首部,第四个字段为6.

紧急指针:URG=1时才有意义,指出本报问中紧急数据的字节数。

选项:最大报文段长度MSS、窗口扩大、时间戳、选择确认。。

TCP连接管理

TCP连接传输三个阶段:

TCP连接的建立采用客户服务器方式,主动发起连接建立的应用进程叫做客户,而被动等待连接建立的应用进程叫做服务器。

假设运行在一台主机(客户)上的一个进程相与另一台主机(服务器)上的一个进程建立一条连接,客户应用进程首先通知客户TCP,他想建立一个与服务器上某一个进程之间的连接,客户中的TCP会用以下步骤与服务器中的TCP建立一条TCP连接:

ROUND1:

客户端发送连接请求报文段,无应用层数据。

SYN=1,seq=x(随机)

ROUND2:

服务器端为该TCP连接分配缓存和变量,并向客户端返回确认报文段,准许连接,无应用层数据。

SYN=1,ACK=1,seq=y(随机),ack=x+1

 

ROUND3:

客户端为该TCP连接分配缓存和变量,并向服务器端返回确认的确认,可以携带数据。

SYN=0,ACK=1,seq=x+1,ack=y+1

SYN洪泛攻击

syn洪泛攻击发生在OSI第4层,这种方式利用TCP协议的特性,就是三次握手。攻击者发送TCP SYN,SYN是TCP三次握手中的第一个数据包,而当服务器返回ACK后,该攻击者就不对其再确认,那这个TCP连接就处于挂起状态,也就是所谓的半连接状态,服务器收不到再确认的话,还会重复发送ACK给攻击者。这样更加浪费服务器资源。攻击者就对服务器发送非常大量的这种TCP连接,由于每一个都没法完成三次握手,所以在服务器上,这些TCP连接会因为挂起状态而消耗CPU和内存,最后服务器可能死机,就无法为正常用户提供服务了。

解决办法是设置SYN cookie

TCP的连接释放

参与一条TCP连接得两个进程中得任何一个都能终止该连接,连接结束后,主机中得“资源”(缓存和变量)将被释放。

ROUND1:

客户端发送连接释放报文段,停止发送数据,主动关闭TCP连接。

FIN=1,seq=u

ROUND2:

服务器端回送一个确认报文段,客户到服务器这个方向得连接就释放了------本关闭状态。

ACK=1,seq=v,ack=u+1

ROUND3:

服务器发送完数据,就发出连接释放报文段,主动关闭TCP连接。

FIN=1,ACK=1,seq=w,ack=u+1

ROUND4:

客户端回送一个确认报文段,再等到时间等待计时器设置的2MSL(最长报文段寿命)后,连接彻底关闭。

ACK=1,seq=u+1,ack=w+1

TCP可靠传输

可靠:保证接收方进程从缓存区读出的字节流与发送方发出的字节流是完全一样的

TCP实现可靠传输的机制

1.校验:与UDP校验一样,增加伪首部

2.序号:

3.确认:

4.重传:确认重传不分家,TCP的发送方在规定的时间内没有收到确认就要重传以发送的报文段。超时重传

TCP采用自适应算法、动态改变重传时间RTTs(加权平均往返时间)

冗余ACK(冗余确认)

每当比期望号大的失序报文段到达时,发送一个冗余ACK,指明下一个期望字节的序号。

TCP流量控制

流量控制:让发送方慢点,要让接收方来得及接收。

TCP利用滑动窗口机制实现流量控制。

在通信过程中,接收方根据自己接收缓存的大小,动态地调整发送方的发送窗口大小,即接收窗口rwnd(接收方设置确认报文段的窗口字段来将rwnd通知给发送方),发送方的发送窗口取接收窗口rwnd和拥塞窗口cwnd的最小值

 

 

TCP拥塞控制

出现拥塞的条件:

对资源需求的总和>可用资源

网络中有许多资源同时呈现供应不足--->网络性能变坏---->网络吞吐量将随输入负荷增大而下降

拥塞控制:

防止过多的数据注入到网络中。  全局性问题

拥塞控制四种算法

慢开始、拥塞避免、快重传、快恢复

假定:

1.数据单方向传递,而另一个方向只传送确认

2.接收方总是有足够大的缓存空间,因为发送窗口大小取决于拥塞程度

发送窗口=Min{接收窗口rwnd,拥塞窗口cwnd}

接收窗口:接收方根据接受缓存设置的值,并告知给发送方,反应接收方容量。

拥塞窗口:发送方根据自己估算你的网络拥塞程度而设置的窗口值,反映网络当前容量。

 

 

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值