计算机网络-传输层

传输层概述

1、传输层是只有主机才会有的层次, 网络设备是三层 物理层 数据链路层 网络层 到不了传输层
2、下层为上层提供服务 传输层 为 应用层提供服务 同时 可以使用网络层的服务

传输层功能

1、传输层提供进程和进程间的逻辑通信
网络层提供主机之间的逻辑通信
2、复用和分用
1)复用:应用层所有的应用进程可以通过传输层再传输到网络层
不同进程的传送单元 报文段使用同一协议进行传输
分用:传输层从网络层收到数据后,交付指明的应用进程
同一协议传送过来的报文段 分给不同的进程
3、传输层对收到的报文进行差错检测
网络层是对IP数据报/分组 的首部进行差错检测 没有对数据部分进行差错检测

传输层的两个协议

TCP 面向连接的传输控制协议
概述
1、传送数据之间必须建立连接,数据传送结束后要释放连接,不提供广播和多播服务
2、TCP要提供的面向连接的传输服务,因此不可避免的增加了许多开销,如回复确认 流量控制 计时器及连接管理等
特点
1、TCP提供可靠交付的服务,无差错,不丢失,不重复,按序到达。(可靠有序,不丢不重)
2、TCP是面向连接的,传输层协议
3、时延大,适用于大文件
4、TCP提供全双工通信 发送方和接收方可以同时接收和发送数据 接收双方都设置有
1)发送缓冲:准备发送的数据&已发送但尚未确认的数据
2)接收缓冲:按序到达但尚未被应用程序读取的数据 & 不按序到达的数据
5、TCP面向字节流
1)流:流入到进程或从进程流出的字节序列
2)TCP把应用程序交下来的数据看成是一连串的无结构的字节流
UDP 无连接的用户数据报协议
传送数据之前不需要建立连接,收到UDP报文后也不需要给出任何确认
特点
1、使用最大努力交付,即不保证可靠交付
2、使用无连接,时延小 没有建立连接、维护连接、释放连接这些过程 减少开销和发送数据之间的时延
3、面向报文的,适用于小文件,一次性传输少量数据的网络应用
1)面向报文:从应用传下来的应用层报文,是既不合并也不拆分的,对报文的大小长度不做任何改变
2)应用层给传输层多长的报文,UDP就照样发送,即一次发送一个完整的报文
4、UDP无拥塞控制 适合很多实时应用 如视频会议
5、UDP首部开销小,8B,TCP20B

TCP和UDP协议的区别

1、UDP 在传送数据之前不需要先建立连接,对方在收到 UDP 报文后,不需要给出任何确认。

2、TCP 提供面向连接的服务。在传送数据之前必须先建立连接,数据传送结束后要释放连接。 TCP 不提供广播或多播服务。

3、UDP 不提供可靠交付,但在某些情况下UDP确是一种最有效的工作方式(一般用于即时通信),比如: QQ 语音、 QQ 视频 、直播等等

4、TCP 要提供可靠的,面向连接的传输服务(TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源),这一难以避免增加了许多开销,如确认,流量控制,计时器以及连接管理等。这不仅使协议数据单元的首部增大很多,还要占用许多处理机资源。
5、TCP 一般用于文件传输、发送和接收邮件、远程登录等场景。

端口

传输层的端口

端口:
1、是传输层的SAP,标识主机中的应用进程
端口分类
1)逻辑端口 /软件端口 看不见摸不着
2) 路由器上的端口是物理端口 看得见摸得找的
端口号:
1、用数字标识的端口 只有本地意义,在因特网中不同计算机的相同端口是没有联系的
2、端口号在本机内唯一标识进程 不同主机的端口号可以相同
3、端口号长度为16bit 能表示65535个不同的端口号
端口号的分类
1、服务器适用的端口号
1)熟知端口号(知名端口号):0-1023
2)登记端口号:为没有熟知端口号的应用程序使用的:1024-49151
2、客户端适用的端口号:仅在客户进程运行时才动态选择的端口号 :49152-65535
套接字
1、在网络中,采用发送方和接收方的套接字组合来识别端口,
2、套接字 唯一标识网络中的一个主机和它上面的一个进程
3、套接字表示:套接字 Socket = (主机IP地址,端口号)
常见应用程序端口号
FTP(文件传输协议) 21
SMTP(简单邮件传输协议) 25
DNS(域名系统) 53
TFTP(简单文件传输协议) 69
HTTP (超文本传输协议)80
MySQL 3306
HTTPS(超文本传输安全协议) 443

TCP连接管理

TCP连接的三阶段

1、建立连接
2、数据传输
3、释放连接

TCP连接采用的方式

TCP连接的建立采用 客户服务器方式(C/S方式)
1、主动发起连接建立的应用进程叫做客户
2、被动等待连接建立的应用进程叫做服务器

TCP连接的建立(三次握手)

为什么要进行三次握手?/三次握手的目的?
1、TCP是面向连接的传输控制协议,需要进行连接即客户端与服务器的握手
2、三次握手的目的是建立可靠的通信连接
3、可靠的通信连接 就是数据的发送和接收必须是正常的,而且必须是双方都确认的自己与对方的发送和接收都必须是正常的
4、第一次握手成功: 客户端的发送和接收均得不到确认,只能表示服务器接收正常,第二次的握手成功:表示客户端自己的发送和接收均是正常的 和对方(服务器)的接收是正常和发送是正常的。如果仅仅是两次握手的话,不能完全表示双方确认自己和对方的接收和发送都是正常的,因为的服务器不知道自己是否发送正常和对方是否接收正常。所以需要第三次握手。第三次握手成功 :服务器知道自己的发送和接收均正常 对方(客户端)的发送和接收也正常的。至此 三次握手 成功后 。客户端和服务器建立可靠的通信连接 即客户端和服务器端均双方的发送和接收都正常 可进行通信。

三次握手过程
1、第一次握手:客户端给服务器发送带有 SYN= 1 (SYN = 1 表示连接请求)标志的数据包
2、第二次握手服务端给客户端发送带有 SYN/ACK 标志的数据包(SYN = 1 ACK = 1(确认号))
3、第三次握手客户端再给服务器发送带有 ACK 标志的数据包(ACK = 1)

第2次握手服务器端传回了ACK,为什么还要传回SYN?
服务器端传回ACK给客户端是为了告诉客户端,我接收到的信息确实就是你所发送的信号了,这表明从客户端到服务端的通信是正常的。
服务器端到客户端的通信是否正常还不得而知,所以客户端发送SYN = 1的标志数据包,进行服务器到客户端的通信请求。确认服务器端到客户端的通信正常。”

什么是SYN?
1、SYNY:是同步序列编号(Synchronize Sequence Numbers) 是 TCP/IP 建立连接时使用的握手信号。
2、在客户端和服务器之间建立正常的TCP网络连接时,客户机首先发出一个 SYN消息,服务器使用SYN-ACK应答表示接收到了这个消息,
3、最后客户端收到 服务器发送的ACK(Acknowledgement)确认并再次向客户端返回一个ACK确认。
4、这样在客户端和服务器之间才能建立起可靠的 TCP 连接,数据才可以在客户机和服务器之间传递。

TCP连接的释放(四次挥手)

四次挥手过程:
1、客户端向服务器端发送一个FIN(表示释放连接请求),用来关闭客户端到服务器的数据传送 (FIN = )
2、服务器客户端发送FIN(连接释放请求),服务器向客户端发送确认报文段ACK(ACK = 1)
1)此时只是关闭了客户端到服务器端的连接 是半关闭状态
2)服务器端到客户端的连接还未释放
3、服务器端向客户端发送FIN(释放连接请求) 用来关闭服务器端到客户端的数据传输 (FIN = 1)
4、客户端收到服务器端发送的释放连接请求,并向服务器端回送ACK 报文确认(ACK = 1)至此TCP连接是全关闭状态

TCP可靠传输

可靠传输

1、可靠:保证接收方进程从缓存区读出的字节流与发送方发出的字节流是完全一样的
2、网络层 提供尽最大努力交付,不可靠传输
2、传输层 使用TCP实现可靠传输

TCP可靠传输的实现机制

校验和

校验和:检验首部和数据。这是一个端到端的检验和,
目的是检测数据在传输过程中的任何变化。
如果收到报文段的检验和有差错,将丢弃这个报文段和不确认收到此报文段。

流量控制

1、流量控制是为了控制发送方发送速率,保证接收方来得及接收。在确认报文中设置接收窗口的值,限制发送方的速度,让发送方慢点,要让接收方来得及接收
2、TCP利用滑动窗口机制实现流量控制
3、TCP 使用的流量控制协议是可变大小的滑动窗口协议。
4、过程:在通信过程中,接收方根据自己接收缓存的大小,动态的调整发送方的发送窗口大小,即接收窗口rwnd(接收方设置确认报文段的窗口字段来将rwnd接收窗口大小 通知给发送方),发送方的发送窗口取接收窗口rwnd和拥塞窗口cwnd的最小值

拥塞控制

1、在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。这种情况就叫拥塞。
2、拥塞控制就是为了防止过多的数据注入到网络中,拥塞控制是一个全局性的过程,涉及到所有的主机,所有的路由器,以及与降低网络传输性能有关的所有因素。
3、流量控制往往是点对点通信量的控制,是个端到端的问题。流量控制所要做到的就是抑制发送端发送数据的速率,以便使接收端来得及接收。
4、为了进行拥塞控制,TCP 发送方要维持一个 拥塞窗口(cwnd) 的状态变量。
拥塞控制窗口的大小取决于网络的拥塞程度,并且动态变化。
发送方让自己的发送窗口取为拥塞窗口和接收方的接受窗口中较小的一个。

TCP的拥塞控制采用了四种算法

1、慢开始算法:

1.1、慢开始算法的思路是当主机开始发送数据时,如果立即把大量数据字节注入到网络,那么可能会引起网络阻塞,因为现在还不知道网络的符合情况。
1.2、经验表明,较好的方法是先探测一下,即由小到大逐渐增大发送窗口,也就是由小到大逐渐增大拥塞窗口数值。cwnd初始值为1,每经过一个传播轮次(从报文发送到接收),cwnd加倍。

2、拥塞避免:

2.1、拥塞避免算法的思路是让拥塞窗口cwnd缓慢增大,即每经过一个往返时间RTT就把发送放的cwnd加1

3、快重传与4、快恢复:

在 TCP/IP 中,快速重传和恢复(fast retransmit and recovery,FRR)是一种拥塞控制算法,它能快速恢复丢失的数据包。没有 FRR,如果数据包丢失了,TCP 将会使用定时器来要求传输暂停。在暂停的这段时间内,没有新的或复制的数据包被发送。有了 FRR,如果接收机接收到一个不按顺序的数据段,它会立即给发送方发送一个重复确认。如果发送方接收到三个重复确认,它会假定确认指出的数据段丢失了,并立即重传这些丢失的数据段。有了 FRR,就不会因为重传时要求的暂停被耽误。  当有单独的数据包丢失时,快速重传和恢复(FRR)能最有效地工作。当有多个数据信息包在某一段很短的时间内丢失时,它则不能很有效地工作

ARQ自动重传协议

基本概述

1、自动重传请求(Automatic Repeat-reQuest,ARQ)是OSI模型中数据链路层和传输层的错误纠正协议之一。

2、它通过使用确认和超时这两个机制,在不可靠服务的基础上实现可靠的信息传输。

3、如果发送方在发送后一段时间之内没有收到确认帧,它通常会重新发送。ARQ包括停止等待ARQ协议和连续ARQ协议。

停止等待ARQ协议

1、停止等待协议是为了实现可靠传输的,
2、它的基本原理就是每发完一个分组就停止发送,等待对方确认(回复ACK)。如果过了一段时间(超时时间后),还是没有收到 ACK 确认,说明没有发送成功,需要重新发送,直到收到确认后再发下一个分组。
3、在停止等待协议中,若接收方收到重复分组,就丢弃该分组,但同时还要发送确认。

4、优缺点:
优点: 简单
缺点: 信道利用率低,等待时间长

停止等待协议中的发送接收状况

1、无差错情况:

1.1发送方发送分组,接收方在规定时间内收到,并且回复确认.发送方再次发送。

2、 出现差错情况(超时重传):

2.1、停止等待协议中超时重传是指只要超过一段时间仍然没有收到确认,就重传前面发送过的分组(认为刚才发送过的分组丢失了)。
2.2、因此每发送完一个分组需要设置一个超时计时器,其重传时间应比数据在分组传输的平均往返时间更长一些。这种自动重传方式常称为 自动重传请求ARQ 。
2.3、在停止等待协议中若收到重复分组,就丢弃该分组,但同时还要发送确认。
2.4、连续 ARQ 协议 可提高信道利用率。发送维持一个发送窗口,凡位于发送窗口内的分组可连续发送出去,而不需要等待对方确认。接收方一般采用累积确认,对按序到达的最后一个分组发送确认,表明到这个分组位置的所有分组都已经正确收到了。

3、确认丢失和确认迟到

3.1确认丢失 :确认消息在传输过程丢失。当A发送M1消息,B收到后,B向A发送了一个M1确认消息,但却在传输过程中丢失。而A并不知道,在超时计时过后,A重传M1消息,B再次收到该消息后采取以下两点措施:1. 丢弃这个重复的M1消息,不向上层交付。 2. 向A发送确认消息。(不会认为已经发送过了,就不再发送。A能重传,就证明B的确认消息丢失)。
3.2确认迟到 :确认消息在传输过程中迟到。A发送M1消息,B收到并发送确认。在超时时间内没有收到确认消息,A重传M1消息,B仍然收到并继续发送确认消息(B收到了2份M1)。此时A收到了B第二次发送的确认消息。接着发送其他数据。过了一会,A收到了B第一次发送的对M1的确认消息(A也收到了2份确认消息)。处理如下:1. A收到重复的确认后,直接丢弃。2. B收到重复的M1后,也直接丢弃重复的M1。

连续ARQ协议
基本概述
1、连续 ARQ 协议可提高信道利用率。
2、发送方维持一个发送窗口,凡位于发送窗口内的分组可以连续发送出去,而不需要等待对方确认。接收方一般采用累计确认,对按序到达的最后一个分组发送确认,表明到这个分组为止的所有分组都已经正确收到了。
优缺点:
优点: 信道利用率高,容易实现,即使确认丢失,也不必重传。
缺点:不能向发送方反映出接收方已经正确收到的所有分组的信息。 比如:发送方发送了 5条 消息,中间第三条丢失(3号),这时接收方只能对前两个发送确认。发送方无法知道后三个分组的下落,而只好把后三个全部重传一次。这也叫 Go-Back-N(回退 N),表示需要退回来重传已经发送过的 N 个消息。

超时重传

当 TCP 发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值