IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 2021-08-21 -> 正文阅读

[网络协议]2021-08-21

计算机网络-运输层

  1. 网络层与运输层的区别: 网络层为主机之间提供逻辑通信,而运输层为应用进程之间提供端到端的逻辑通信。

  2. UDP:用户数据报协议。
    1、特点
    (1) 在传输数据前,不需要先建立连接;
    (2)不保证可靠交付;
    (3)面向报文。即应用层交给UDP的报文,不做任何修改,直接添加UDP的首部,交付给IP层。因此,应用层需要选择合适大小的报文。
    (4)支持一对一、一对多、多对一和多对多的交互通信;
    (5)首部开销小,只有8个字节,小于TCP(20字节);
    2、UDP组成:数据字段和首部字段,如下图所示。
    (1)首部字段:
    源端口:在需要对方回信时使用,不需要时可全选0;
    目的端口:在终点交付报文时必须使用;
    长度:最小值是8位
    检验和:检验UDP用户数据报在传输中是否有错,有错则丢弃。
    在这里插入图片描述

  3. TCP:传输控制协议。
    1、特点
    (1)面向连接的运输层协议,在使用前,必须先建立连接;传输结束后要释放连接,类似于打电话,拨号(建立连接)与挂机(释放连接);
    (2)每一条TCP只能连接两个端点,只能是点对点的(一对一),就像打电话,一个手机号只能同时跟一个手机号通话;
    (3)提供可靠交付:传输的数据无差错、不丢失、不重复、并且按序到达;
    (4)全双工通信:通信双方在任何时候都能发送数据;
    (5)面向字节流:发送方应用程序交给发送方的TCP共10个数据块,可能接收方的TCP只用了4个数据块就把收到的字节流交付上层的应用程序。也就是TCP仅把应用程序交付的数据块看成字节流,不管发送方发送的数据块和接收方接收的数据块是否存在对应关系。
    2、TCP的连接
    TCP的端点:套接字/插口。端口号拼接到IP地址就构成了套接字,表示方法:点分十进制的IP地址后面写上端口号,中间用逗号或冒号隔开。eg:192.3.4.5:80,ip地址是192.3.4.5,端口号是80。每一条TCP连接唯一地被通信两端的两个套接字所确定。
    3、TCP的连接建立
    (1)连接建立的过程:握手。(三次握手)
    ACK:TCP首部的确认号,只有当ACK=1时,确认号字段才生效。
    SYN:位于TCP首部,在连接建立时用来同步序号。SYN置1,表示这是一个连接请求或者连接接收报文。只有SYN=1,ACK=1时,表明对方同意建立连接。
    如下图所示:
    1)A向B发出请求报文段,SYN=1,初始序号seq=x,SYN报文段不携带数据,但要消耗一个序号。
    2)B收到连接请求报文后,若同意建立连接,则向A发送确认。ACK=1,SYN=1,确认号是ack=x+1,序号seq=y。此时的报文段不携带数据,但要消耗一个序号。(tcp服务器进程进入SYN-RCVD即同步收到状态)。
    3)A收到B的确认后,需要向B给出确认。ACK=1.确认号ack=y+1,序号seq=x+1。ACK可携带数据,不携带数据就不消耗序号,在这个前提下,下一个报文段的序号仍是x+1。此时TCP建立完成,A进入ESTABLISHED状态。
    发送确认的原因:防止已实效的连接报文段突然又传送到B,产生错误):a发送请求给b,由于请求报文丢失而未收到确认。于是又发送了一次,后来收到b的确认,建立了连接。假如,a发送的请求报文因为再某些网络结点长时间滞留了,以至于延误了一段时间到达b,b收到后就确认了,就一直等待a发送数据,但a不知道啊,就不理睬b。这样就导致b的资源被浪费了。
    三次握手的过程:类似于两座山的山大王(a,b),相约攻打山下的官兵。需要相互之间进行确认,否则可能会被山下的官兵团灭。

在这里插入图片描述
四次握手
将第二次握手拆分成2个报文段,变成了四次握手,效果一样。拆分:先发送一个确认报文段(ACK=1,确认号ack=x+1),然后再发一个同步报文段(SYN=1,seq=y)。

4、四次挥手
FIN:终止,用于释放一个连接,FIN=1,表示发送方的数据已发送完毕,并要求释放运输连接。
MSL:最长报文段寿命。
1)a的应用程序向其TCP发出释放报文段,并停止再发送数据,主动关闭TCP连接。FIN=1,序号seq=u(u=u前面已传输过的数据的最后一个字节的序号+1),等待b的确认。a进入FIN-WAIT-1(终止等待1)状态;(FIN即使不携带数据也会消耗掉一个序号)
2)b收到连接释放报文后发出确认,确认号是ack=u+1,seq=v(v=v前面已传输过的数据的最后一个字节的序号+1),b进入
CLOSE-WAIT(关闭等待)状态
。此时TCP连接处于半关闭状态,TCP服务器应通知高层应用程序,a->b的连接已经释放,但b->a的连接还可以发送数据,a是要接收的。a收到b的确认后,就进入FIN-WAIT-2(终止等待2)状态,等待b发出的连接释放报告文。
3)b向a发送释放连接报告文,FIN=1。假定b的序号是w(在半关闭状态可能发送了一些数据),b必须重复上次已经发送过的确认号ack=u+1,此时b浸入LAST-ACK(最后确认)状态,等待a的确认。b进入LAST-ACK状态。
4)a收到b的释放报文后发出确认,ACK=1,ack=w+1,seq=u+1(FIN报文段需要消耗序号)。然后a进入
TIME-WAIT(时间等待)状态
,现在的TCP连接还没有释放掉。必须等待时间等待计时器设置的时间2MSL后,a才进入CLOSED状态。b只要收到a的确认,就进入CLOSED状态,因此b结束TCP连接的时间要比a早一些。
在这里插入图片描述

注意:a在TIME-WAIT(时间等待)状态等待2MSL的原因:
1)保证a发送的最后一个ACK报文段能够到达b;ack报文段可能会丢失,使得处于LAST-ACK状态的b收不到a发送的FIN+ACK报文段的确认。b就会超时重传这儿FIN+ACK报文段,就需要a在2MSL时间段内收到FIN+ACK报文段。此时,a重传一次确认,并重新启动2MSL计时器。最后a、b都正常的进入CLOSED状态。
2)防止“已实效的连接请求报文段”重新出现在本连接中。a发送完最后一个ACK报文段后,再经过2MSL,就可以使本连接持续的时间内所产生的所有报文段都从网络消失。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-22 13:50:08  更:2021-08-22 13:51:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 20:16:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码