前言
文章中的内容来自B站王道考研计算机网络课程,想要完整学习的可以到B站官方看完整版。
五:传输层
5.1:传输层基本概述
传输层的功能:
1传输层提供进程和进程之间的逻辑通信
2复用和分用
微信和QQ都使用传输层的协议进行发送数据(复用);其他主机通过微信和QQ给我发送信息时也是通过传输层的协议,但是最后数据会分别发送到微信和QQ对应的进程(分用)。
3:传输层对收到的报文进行差错检测
4:传输层的两个协议(TCP/UDP)
TCP:可靠、面向连接、时延大、适合大文件
UDP:不可靠、无连接、时延小、适合小文件
传输层的端口
端口是传输层用来标识主机中的应用进程,端口号长度为16位,能表示65536个不同的端口号
5.2:UDP协议
主要特点:
无连接、不可靠、面向报文适合一次性传输少量数据、无拥塞控制适合很多实时应用、首部开销小只需要8B,TCP首部需要20B。
UDP首部格式
UDP长度:首部+数据字段
UDP校验
IP数据报格式和协议种类
使用伪首部来校验UDP、伪首部数据格式(只在接受双方进行校验时才出现,不会进行传递)
5.3.1:TCP协议特点和TCP报文段格式
TCP协议特点
面向连接、TCP连接只能是点对点、可靠有序不丢不重、全双工通信(有发送缓存和接收缓存)、面向字节流(流:流入到进程或从进程流出的字节序列)
TCP报文段首部格式
IP数据报格式、协议种类
UDP首部
TCP首部
序号、确认号、数据偏移
6个控制位
紧急位URG(urgent):发送紧急数据,不用在缓存里排队
确认位ACK(acknowledgement):在连接建立后所有传送的报文段都必须把ACK置为1
推送位PSH(push):接收方尽快交付接收应用进程,不再等到缓存填满再向上交付
复位RST(reset):标明TCP连接中出现严重差错,必须释放连接,然后再重新建立连接
同步位SYN(synchronous):表明是一个连接请求/连接接受报文
终止位FIN(finish):表明次报文段发送方数据已发完,要求释放连接
窗口:指的是发送本报文段的一方的接收窗口,即现在允许对方发送的数据量
检验和:检验首部和数据,检验时要加上12B的伪首部,第四个字段是6
紧急指针:当URG = 1时有效,指出本报文段中紧急数据的字节数
5.3.2:TCP的连接管理
TCP连接传输的三个阶段(连接建立、数据传送、连接释放)
TCP连接的建立采用客户服务器方式,主动发起连接建立的应用进程叫做客户,而被动等待连接建立的应用进程叫服务器。
TCP连接:
TCP的释放:
5.3.3:TCP的可靠传输
可靠:保证接收方进程从缓存区读出的字节流与发送方发出的字节流是完全一样的
TCP首部数据结构
TCP实现可靠传输的机制(校验、序号、确认、重传)
序号:
确认:
超时重传
重传时间:TCP采用自适应算法,动态改变重传时间RTTs(加权平均往返时间)
冗余ACK、快速重传
5.3.4:TCP流量控制
数据链路层讲过的三种流量控制方式
TCP首部数据格式
发送方的发送窗口取决于接收窗口rwnd和拥塞窗口cwnd的最小值
当接收方给发送方发送一个rwnd = 0的报文段,过了一段时间接收方想给发送方重新发送一个rwnd != 0的报文段但是在中途丢失了,这时发送端的窗口长度还是为0就可能会造成操作系统死锁的现象(接收方想要发送方发数据,但是发送方有一直在等接收方重新调整自己的发送窗口长度)
TCP协议会为每一个连接设有一个计时器
5.3.5:TCP的拥塞控制
出现拥塞的条件
拥塞控制和流量控制的区别
拥塞情况不知道是哪几台主机发送过多造成的,发送方很多数据迟迟到不了接收方;而流量控制是一个点到点的过程,发送方发送速度过快而接收方的接收缓存不够。
拥塞控制的四种算法(慢开始、拥塞避免、快重传、快恢复)
两个假定:
接收窗口和拥塞窗口:
慢开始和拥塞避免(造成网络拥塞之后,初始值重设为1,门限值变原来的一半)
快重传和快恢复
六:应用层
6.1:网络应用模型
应用层对应用程序的通信提供服务
常见端口号:
两种网络应用模型
C/S模型
P2P模型
6.2:域名解析系统DNS
DNS将域名转换成IP地址
域名:
顶级域名:
二级域名:
域名服务器:(根域名服务器、顶级域名服务器、权限域名服务器、本地域名服务器)
域名解析过程(递归查询和迭代查询)
递归查询:叫别人找最后返回给本地域名服务器
迭代查询:本地域名服务器自己一层层地找
6.3:文件传输协议FTP(要和SFTP区分开、SFTP是基于SSH,端口号是22)
常见应用程序端口号
FTP工作原理
FTP、SFTP和SSH是三种不同的协议,其关系如下:
1:FTP是一种标准的网络协议,用于在客户端和服务器之间传输文件。
2:SFTP是一种基于SSH协议的加密协议,用于在客户端和服务器之间传输文件,可以保证传输的安全性。
3:SSH是一种安全协议,用于在客户端和服务器之间进行加密通信,可以保证通信的安全性。
在Linux系统下,可以通过以下方式使用这三种协议:
1:FTP:使用命令行工具如ftp或ncftp,或者使用GUI工具如FileZilla等。:
2:SFTP:同样可以使用命令行工具如sftp或psftp,或者使用GUI工具如FileZilla等。需要注意的是,SFTP需要在服务器上配置SSH服务。
3:SSH:使用命令行工具如ssh或putty等进行远程登录或执行命令。
6.4.1:电子邮件
组成结构(SMTP发、POP3收)
邮局协议POP3
网际报文存取协议IMAP
基于万维网的电子邮件(HTTP和SMTP相组合)
6.5:万维网和http协议
域名
万维网WWW(world wide web),是无数个网络站点和网页的集合
统一资源定位符URL可以唯一标识资源(文字、视频、音频)
超文本传输协议http
Cookie
非持久连接、持久连接
HTTP的报文结构
HTTP(Hypertext Transfer Protocol)是一种用于传输超文本的协议。它使用TCP/IP作为传输协议,通过客户端和服务器之间的请求和响应来进行通信。
1. 请求行:包含请求方法、请求的URL和HTTP协议的版本。例如:GET /index.html HTTP/1.1
2. 请求头:包含一些附加的信息,如请求的主机、用户代理、内容类型等。每个头字段都以键值对的形式出现,用冒号分隔。例如:Host: www.example.com
3. 空行:请求头和请求体之间需要有一个空行。
4. 请求体:可选的,用于传输请求的数据,如表单数据、文件等。
5. 响应行:包含响应的状态码和状态消息。例如:HTTP/1.1 200 OK
6. 响应头:与请求头类似,包含一些附加的信息,如服务器类型、内容长度、响应时间等。
7. 空行:响应头和响应体之间需要有一个空行。
8. 响应体:包含服务器返回的数据,如HTML页面、图片、JSON数据等。
以上是HTTP协议的基本数据格式,不同的请求和响应可能会有不同的头字段和数据内容
总结
以上是本文的全部内容,非常感谢你能看到这。