计算机网络-传输层

学习目标:

传输层的功能

为相互通信的应用进程提供了逻辑通信
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

层协议UDP和TCP

用户数据报协议UDP协议主要特点:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
传输控制协议TCP:
TCP协议特点

  1. TCP如何实现可靠传输
  2. TCP协议如何实现流量控制
  3. TCP协议如何避免网络拥塞

TCP概述:
在这里插入图片描述

TCP协议如何以字节流的方式把一个文件从一个计算机上传递到另一个计算机:
从应用程序中读取数据到缓存中的数据大小没有具体要求,比如第一次读取12345第二次67或者第一次123第二次4567都可以。
在这里插入图片描述
加上头部传输
在这里插入图片描述
接收端接受缓存去掉头部
在这里插入图片描述
应用程序从接受的缓存中读取数据
在这里插入图片描述
TCP的连接:
TCP把连接作为最基本的抽象
每一条TCP连接有两个端点(IP地址+端口)
TCP连接的端口不是主机,不是主机的IP地址,不是应用进程,也不是传输层的协议端口。TCP连接的端口叫做套接字
在这里插入图片描述

TCP协议是点到点的通信,对于应用程序来说,一个点到另一个点的表示是IP地址加上端口

可靠传输的工作原理

  1. 停止等待协议
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    信道利用率U:
    U = T D T D + R T T + T A U = \frac{T_D}{T_D+RTT+T_A}
    其中: T D T_D是发送数据包时间
    R T T RTT 是往返时间
    T A T_A 是确认时间

流水线传输:
在这里插入图片描述
在这里插入图片描述
2. 连续ARQ协议
连续ARQ协议规定,发送方每收到一个确认,就把发送窗口向前移动一个分组的位置。如果发送方收到了对第1个分组的确认,于是把发送窗口向前移动一个分组的位置。如果原来已经发送了前5个分组,那么现在就可以发送窗口内的第6个分组了。
接收方一般都采用累积确认的方式。这就是说,接收方不必对收到的分组逐个发送确认,在收到分组后,对按序到达的最后一个分组发送确认,就表示前面的分组都正确接收到了。

每个数据包都有一个确认,效率还是不高,下面介绍累积确认:
在这里插入图片描述
在这里插入图片描述

TCP报文段的首部格式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
例如:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

TCP如何实现可靠传输(接近真实的计算机可靠传输)

在这里插入图片描述

  1. 以字节为单位的滑动窗口技术
    这里B的接收缓存是20字节,如果B的接收缓存比较大,也可以是其他大小。A于B在建立会话的时候,B计算机会告诉A计算机它的接收窗口是20字节,这时候A就会设定自己的发送窗口是20个字节,也就是说A的发送窗口是有B的接收窗口决定的。
    演示AB通信过程:
    (1)假设都没有丢失数据包的情况
    在这里插入图片描述
    发送窗口中发送的数据在没有收到B发来的接收确认的时候,缓存中的数据是不允许删除的,比如这里的1 2 3 4 5 6 7 8 9 10
    在这里插入图片描述
    假设这里A计算机没有收到确认,A计算机还是可以继续发送的

在这里插入图片描述
此时20个字节都在网上,就不能再继续发送了。
假定B已经收到了1-6,并且A也收到了B的确认,那么此时A窗口就会移动,A窗口的发送缓存中1-6就可以删除了
在这里插入图片描述
在B发出1-6的确认以后,B的接收的接收窗口也向右移动,应用程序也可以读1-6


在这里插入图片描述
收到确认之后,接着移动

在这里插入图片描述
依次类推。。。。。
(2)丢包情况
传输过程中
在这里插入图片描述
7 8 9 数据包丢包
在这里插入图片描述
这时B在发送确认数据包的时里面有一个选择确认SACK,告诉A计算机那一段缺失了,这时A计算机就只发丢失的那一块,可以接着发后面的数据包
在这里插入图片描述

  1. 超时重传时间的选择
    在这里插入图片描述

TCP的流量控制

会话请求,还没有确认号,所以这里是0,接受窗口10,表示10个字节
在这里插入图片描述
A计算机根据B计算机设置发送窗口

在这里插入图片描述
发送数据包
在这里插入图片描述
1234到了接受端口,56丢了或者没到
在这里插入图片描述
这个时候B给A发送确认,已经收到了1-4,B的缓存有点小,窗口变成了8,56字节丢了先不管,接着发7 8 9 10 11 12
在这里插入图片描述
在这里插入图片描述
5 6丢了,这个时候在重传,这里为什么重传5 6 ,不重传其他的,上面可靠传输说过。
在这里插入图片描述
B计算机发送确认,该发送13,假设窗口调整2,A计算机就会调整发送。这个发送13 14的过程中,由于窗口是2,所以这里要等待B计算机发送确认的时候,接着发送一下面的字节。
在这里插入图片描述
假设B计算机处理缓存中数据,不在接受了。那么此时发送确认号15,窗口大小为0
在这里插入图片描述
这时A、B的窗口都变成了0,不在进行数据的传输了,这里就是实现了流量控制

在这里插入图片描述
这时B计算机处理数据,这样缓存的腾出来了,在调整接受窗口
在这里插入图片描述
在发送确认号15,窗口大小为10,接着发送数据
在这里插入图片描述
问题:
如果这个确认在传输的过程中丢了,A计算机一直等着这个确认,这个时候该怎么办?
A计算机会定时发送窗口测试的数据包,看看B计算机现在的接受窗口是多少,避免一直等
在这里插入图片描述

TCP流量控制就是通过接受段告诉发送端接受窗口有多大来实现的

TCP的拥塞堵塞

在这里插入图片描述
在这里插入图片描述
拥塞控制的算法有四种,即慢开始、拥塞避免、快重传、快恢复。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
“拥塞避免”并非指完全能够避免了拥塞,利用以上的措施要完全避免网络拥塞还是不可能的
“拥塞避免”是说在拥塞避免阶段把拥塞窗口控制为按线性规律增长,使网络比较不容易出现拥塞
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
发送窗口的上限值:
发送方的发送窗口的上限值应当取为接受方窗口rwnd和拥塞窗口cwnd这两个变量中较小的一个,公式确定:
发送窗口的上限值 = Min[rwnd,cwnd]

TCP的运输连接管理

在这里插入图片描述
为什么要建立三次连接?

采用三次握手是:为了防止失效的连接请求报文段突然又传送到主机 B ,因而产生错误。
比如说:失效的连接请求报文段是指:主机 A 发出的连接请求没有收到主机 B 的确认,于是经过一段时间后,主机 A 又重新向主机 B 发送连接请求,且建立成功,顺序完成数据传输。考虑这样一种特殊情况,主机 A 第一次发送的连接请求并没有丢失,而是因为网络节点导致延迟达到主机 B ,主机 B 以为是主机 A 又发起的新连接,于是主机 B 同意连接,并向主机 A 发回确认,但是此时主机 A 根本不会理会,主机 B 就一直在等待主机 A 发送数据,导致主机 B 的资源浪费
TCP的连接建立:
在这里插入图片描述
(1)A的TCP向B发送链接请求报文段,同步位SYN=1,选择序号seq=x,表明传送数据时的第一个数据字节的序号是x。
(2)B的TCP收到请求报文段后,如同意,则发送确认,B的确认报文段中使SYN=1,使ACK=1,其确认号ack=x+1,自己选择的序列号seq=y
(3)A收到报文段后向B给出确认,ACK=1,确认号ack=y+1,链接建立。

TCP的释放:
在这里插入图片描述
(1)FIN=1,自己的序号seq=u,等待B的确认
(2)B发送确认,确认号ack=u+1,序号seq=v,TCP链接处于半关闭状态,B若发送数据,A仍可以接收数据
(3)B在此发送FIN=1,ACK=1,自己的序号seq=w,确认号ack=u+1
(4)A在给发送ACK=1,自己的序号seq=u+1,ack=w+1,在等待2MSL真正释放。

补充

传输层的两个协议

TCP 需要将要传输的文件分段 传输 服务器和客服端建立会话 实现可靠传输 有流量控制功能
UDP 一个数据包就能够完成数据通信 不需要分段 不需要建立会话 不需要流量控制 不可靠传输(比如:当电脑访问一个网站的时候,输入一个网址,需要将域名解析成一个IP地址,通过IP地址访问网站,这时就向DNS服务器发送一个请求,一个数据包就可以,这时传输层就是使用的UDP协议;还有就是QQ聊天,屏幕广播 多播)

传输层协议和应用层协议之间的关系

常见的应用层协议使用的端口
http = TCP + 80
https = TCP + 443
RDP = TCP + 3389
ftp = TCP + 21
共享文件夹 = TCP + 445
SMTP = TCP + 25
POP3 = TCP + 110
telent = TCP + 23
SQL = TCP + 1433
DNS = UDP + 53

补充:
服务和应用层协议之间关系

  1. 服务使用TCP或UDP的端口侦听客服端请求
  2. 客户端使用IP地址定位服务器 使用目标端口 定位服务
  3. 可以在服务器网卡上设置只开放必要的端口 实现服务器网络安全

如何在Windows上安装服务
侦听端口

如何查看服务侦听的端口

netstat -an
netstat -n 查看建立的会话
netstat -nb 查看建立会话的进程
telent 192.168.80.100 2289 测试远程计算机某个端口是否打开

在这里插入图片描述

如何更改服务使用默认端口

如何设置Windows网络安全

  • 设置本地连接TCP/IP筛选

猜你喜欢

转载自blog.csdn.net/qq_42711815/article/details/89088893