传输层协议

一、传输层

  • 传输层是OSI参考模型中的第四层,传输层协议为网络端点主机上的进程之间提供了可靠、有效的报文传送服务。
  • 传输层的服务一般要经历传输连接建立阶段,数据传送阶段,传输连接释放阶段3个阶段才算完成一个完整的服务过程。
  • 而在数据传送阶段又分为一般数据传送和加速数据传送两种形式。
  • 传输层中最为常见的两个协议分别是传输控制协议(TCP)和用户数据报协议(UDP)。
  • 传输层提供逻辑连接的建立、传输层寻址、数据传输、传输连接释放、流量控制、拥塞控制、多路复用和解复用、崩溃恢复等服务。

二、传输层协议

1、TCP协议(​ 传输控制协议):

1.TCP/IP协议族传输层协议

TCP是面向连接的,可靠的进程到进程通信的协议;

TCP提供全双工服务,即数据可在同一时间双向传输;

TCP报文段:

        (1)TCP将若干个字节构成一个分组,叫报文段(Segment)

        (2)TCP报文段封装在IP数据报中

传输层协议_第1张图片

  • 源端口、目标端口:计算机上的进程要和其他进程通信是要通过计算机端口的,而一个计算机端口某个时刻只能被一个进程占用,所以通过指定源端口和目标端口,就可以知道是哪两个进程需要通信。源端口、目标端口是用16位表示的,可推算计算机的端口个数为2^16个,即 65536 (0-65535)
  • 序列号:表示本报文段所发送数据的第一个字节的编号。在TCP连接中所传送的字节流的每一个字节都会按顺序编号。由于序列号由32位表示,所以每2^32个字节,就会出现序列号回绕,再次从0 开始 无限循环
  • 确认号:(ack)表示接收方期望收到发送方下一个报文段的第一个字节数据的编号。也就是告诉发送方:我希望你(指发送方)下次发送的数据的第一个字节数据的编号为此确认号:传输是否有问题?
  • 数据偏移/首部长度:表示TCP报文段的首部长度,共4位,由于TCP首部包含一个长度可变的选项部分,需要指定这个TCP报文段到底有多长。它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。该字段的单位是32位(即4个字节为计算单位),4位二进制最大表示15,所以数据偏移也就是TCP首部最大60字节
  • 控制位
    • URG(紧急位):表示本报文段中发送的数据是否包含紧急数据。后面的紧急指针字段(urgent pointer)只有当URG=1时才有效
    • ACK(确认位):表示是否前面确认号字段是否有效。只有当ACK=1时,前面的确认号字段才有效。TCP规定,连接建立后,ACK必须为1,带ACK标志的TCP报文段称为确认报文段
    • PSH(急切位):提示接收端应用程序应该立即从TCP接收缓冲区中读走数据,为接收后续数据腾出空间。如果为1,则表示对方应当立即把数据提交给上层应用,而不是缓存起来,如果应用程序不将接收到的数据读走,就会一直停留在TCP接收缓冲区中
    • RST(重置位):如果收到一个RST=1的报文,说明与主机的连接出现了严重错误(如主机崩溃),必须释放连接,然后再重新建立连接。或者说明上次发送给主机的数据有问题,主机拒绝响应,带RST标志的TCP报文段称为复位报文段
    • SYN(同步位):在建立连接时使用,用来同步序号。当SYN=1,ACK=0时,表示这是一个请求建立连接的报文段;当SYN=1,ACK=1时,表示对方同意建立连接。SYN=1,说明这是一个请求建立连接或同意建立连接的报文。只有在前两次握手中SYN才置为1,带SYN标志的TCP报文段称为同步报文段
    • FIN(断开位):表示通知对方本端要关闭连接了,标记数据是否发送完毕。如果FIN=1,即告诉对方:“我的数据已经发送完毕,你可以释放连接了”,带FIN标志的TCP报文段称为结束报文段
  • 窗口大小:表示现在允许对方发送的数据量,也就是告诉对方,从本报文段的确认号开始允许对方发送的数据量,达到此值,需要ACK确认后才能再继续传送后面数据,由Window size value * Window size scaling factor(此值在三次握手阶段TCP选项Window scale协商得到)得出此值
  • 校验和:提供额外的可靠性紧急指针:标记紧急数据在数据字段中的位置
  • 选项部分:其最大长度可根据TCP首部长度进行推算。TCP首部长度用4位表示,选项部分最长为:(2^4-1)*4-20=40字节

注意:不要将确认序号Ack与标志位中的ACK搞混了。确认方Ack=发起方Seq+1,两端配对。

2.三次握手原理:

客户端向服务器发送SYN同步请求,请求与服务器建立连接,服务器收到此SYN同步请求后,会针对客户端的SYN同步请求进行ACK响应的同时也会发送一个SYN同步请求,当客户端收到服务器发过来的SYN同步请求时,会给予一个ACK响应。

 传输层协议_第2张图片

用简单一点的解释就是将客户端和服务端比作男孩和女孩,用来解释“三次握手”;

如下:

传输层协议_第3张图片

3.为什么要三次握手

因为TCP是可靠的传输层协议,它在传输数据前,会建立双向数据通信通道,当保证双向数据传输的通道没有问题时,才会发送数据,起到保护数据的作用。 

4.四次挥手原理

客户端向服务器发送FIN断开请求,服务器接收到此请求后,回复一个ACK。服务器向客户机发送FIN断开请求,客户机收到此请求后,回复一个ACK

传输层协议_第4张图片

传输层协议_第5张图片

5.三次握手握三次,为什么断开要断四次?

        TCP建立连接时之所以只需要"三次握手",是因为在第二次"握手"过程中,服务器端发送给客户端的TCP报文是以SYN与ACK作为标志位的。SYN是请求连接标志,表示服务器端同意建立连接;ACK是确认报文,表示告诉客户端,服务器端收到了它的请求报文。

        即SYN建立连接报文与ACK确认接收报文是在同一次"握手"当中传输的,所以"三次握手"不多也不少,正好让双方明确彼此信息互通。

        数据传输方向是双向的,一个方向的数据通道关闭需要一次请求和一次确认,因此需要断两次,而我们有两个数据方向,因此需要断四次。

6.TCP半关闭状态是什么情况?

        客户机向服务器发送了FIN请求,服务器也给予了ACK响应。但是,服务器还有数据需要传输给客户机,因此服务器并没有向客户机立即发送FIN请求。

端口号:

客户端根据需要那种服务,从而发送到特定的目的端口

端口划分为三个类别,其范围介于1到65,535之间。

2、UDP协议(用户数据报协议):

UDP报文的首部格式:

源端口号(16) 目标端口号(16)
UDP长度(16) UDP校验和(16)

数据报的长度是指包括报头和数据部分在内的总字节数。

UDP协议使用报头中的校验值来保证数据的安全。

UDP协议与TCP协议的区别:

UDP协议:用户数据报协议

TCP协议:传输控制协议

无连接,不可靠的传输协议 面向连接,可靠的传输协议
花费的开销小 分段,重组,重传,滑动窗口
传输效率高 适用于对可靠性要求较高的场合

 常用UDP端口号及其功能:

端口 协议 说明
69 TFTP 简单文件传输协议
111 RPC 远程过程调用
123 NTP 网络时间协议

常用TCP端口号及其功能:

端口 协议 说明
21 FTP FTP服务器所开放的控制端口
23 TELNET 用于远程登录,可以远程控制管理目标计算机
25 SMTP SMTP服务器开放的端口,用于发送邮件
80 HTTP 超文本传输协议
110 POP3 用于邮件的接受
总结
  • 路由器通过查询表、实现数据包的转发
  • 路由表的形成有静态添加和动态学习两种方式
  • 静态路由是由管理员手工添加的路由信息
  • 默认路由是一种特殊的静态路由

你可能感兴趣的:(网络)