首页 > 其他分享 >传输层协议学习

传输层协议学习

时间:2022-09-06 14:01:33浏览次数:58  
标签:协议 报文 确认 SYN TCP 发送 学习 传输层 连接

 

传输层协议

TCP/IP 介绍

TCP协议

TCP/IP 分层

TCP特新

TCP报文

TCP三次握手

TCP四次挥手

UDP特性

 

 

 

传输层协议

TCP/IP 介绍

  TCP/IP是一个Protocol Stack,包括TCP、IP、UDP、ICMP、RIP、TELNET、FTP、SMTP、ARP等许多协议

TCP协议

TCP/IP 分层

TCP特性

  1. 工作在传输层

  2. 面向连接协议

  3. 全双工协议

  4. 半关闭

  5. 错误检查

  6. 将数据打包成段,排序

  7. 确认机制

  8. 数据恢复,重传

  9. 流量控制,滑动窗口

TCP报文

  • 源端口、目标端口:计算机上的进程要和其他进程通信是要通过计算机端口的,而一个计算机端口某个时刻只能被一个进程占用,所以通过指定源端口和目标端口,就可以知道是哪两个进程需要通信。源端口、目标端口是用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字节

 TCP三次握手

 

 

  tcp是面向连接的,就是说每次发送数据之前都要和对方建立一条可靠的连接,这个建立连接的过程分为3个步骤,就叫做三次握手

  当客户端向服务器发送请求连接的报文时: Seq序列号=x(x为随机) SYN=1(表示发送连接请求)

  服务器端收到客户端发来的请求报文后,同意建立连接,则向客户端发送确认报文: Seq序列号=y(这时服务器也会产生一个序列号y,和客户端的序号不相关) Ack确认号=x+1(Seq序列号x+1,表示确认收到了客户端的请求) ACK=1(表示这是条确认请求) SYN=1(同时也发送一个建立连接的请求)

  客户端进程收到服务端进程的确认后,还要向服务端给出确认,然后连接成功建立: Seq序列号=x+1(这时客户端的序号为1) Ack确认号=y+1(表示确认收到了服务器的连接请求) ACK=1(表示这是确认报文)

 

  1. CLOSED 没有任何连接状态

  2. LISTEN 侦听状态,等待来自远方TCP端口的连接请求 (服务开启 http(进程) 80端口在帮进程 看着 有没有人找 http )

  3. SYN-SENT 在发送连接请求后,等待对方确认

  4. SYN-RECEIVED 在收到和发送一个连接请求后,等待对方确认

  5. ESTABLISHED 代表传输连接建立,双方进入数据传送状态

TCP四次挥手

  1. FIN-WAIT-1 主动关闭,主机已发送关闭连接请求,等待对方确认

  2. FIN-WAIT-2 主动关闭,主机已收到对方关闭传输连接确认,等待对方发送关闭传输连接请求

  3. TIME-WAIT 完成双向传输连接关闭,等待所有分组消失

  4. CLOSE-WAIT 被动关闭,收到对方发来的关闭连接请求,并已确认

  5. LAST-ACK 被动关闭,等待最后一个关闭传输连接确认,并等待所有分组消失

  6. CLOSING 双方同时尝试关闭传输连接,等待对方确认

 

UDP特性

  1.工作在传输层

  2.提供不可靠的网络访问

  3.非面向连接协议

  4.有限的错误检查

  5.传输性能高

  6.无数据恢复特性

 

标签:协议,报文,确认,SYN,TCP,发送,学习,传输层,连接
From: https://www.cnblogs.com/yuqiao9/p/16661441.html

相关文章

  • 最新资讯|2022年8月29日,IECEE发布电池认证CTL协议DSH1037A!
    2022年8月29日,IECEE发布电池认证CTL协议DSH1037A,涉及标准IEC62133:2002,IEC62133:2012,IEC62133-1:2017,IEC62133-2:2017,IEC62619:2017,IEC62660-3:2016,CTL协议DSH103......
  • 个人翻译Introduction to Linear Algebra, 5th Edition 2.4节(仅用于交流学习,非盈利)
    本书的翻译仅为交流学习!才疏学浅,不当的地方还望指正。请勿于其它用途!PDF文件 链接一:  https://pan.baidu.com/s/1aVHp2bZeezqrz5BRSn2ZiQ提取码:wd3q  链接二:http......
  • AXI4协议
    AXI(AdvancedeXtensibleInterface)高级可扩展接口 ZYNQ器件的AXI用于ARM与FPGA之间的数据交换 AXI4接口的5个独立通道1、读地址2、度数据3、写地址4、写数据5......
  • 计算机网络学习笔记4(网络层)
    计算机网络学习笔记4(网络层)1.概述从发送端主机向接收端主机之间传输报文段在发送端要把报文段封装为数据包在接收端要传递报文段给运输层在每一个主机和路由......
  • Java开发学习(三十)----Maven聚合和继承解析
    一、聚合分模块开发后,需要将这四个项目都安装到本地仓库,目前我们只能通过项目Maven面板的install来安装,并且需要安装四个,如果我们的项目足够多,那么一个个安装起来还是......
  • Java学习-第一部分-第二阶段-项目实战:坦克大战【3】
    坦克大战【3】笔记目录:(https://www.cnblogs.com/wenjie2000/p/16378441.html)坦克大战0.6版√增加功能防止敌人坦克重叠运动记录玩家的成绩(累积击毁敌方坦克数),......
  • 学习现代 JavaScript (ES6+) 的基础知识
    学习现代JavaScript(ES6+)的基础知识您应该在代码中开始使用的10个现代功能您可能已经知道JavaScript是一种功能丰富的编程语言,每次更新都会不断增强。有很多事......
  • python学习Day60
    Day60今日内容概要表查询数据准备及测试环境搭建ORM常见表查询关键字双下划线查询查看ORM底层SQL遇见ORM外键字段创建外键字段数据增删改查正反向概念基于对象......
  • Mybatis学习笔记(七)——Mybatis关联查询
    级联关系是一个数据库实体的概念,有3种级联关系,分别是一对一级联、一对多级联以及多对多级联。例如,一个角色可以分配给多个用户,也可以只分配给一个用户。大部分场景下,我们......
  • Mybatis学习笔记(六)——Mybatis注解
    注解主要分为三大类,即SQL语句映射、结果集映射和关系映射。下面分别进行讲解。不过一般注解用的比较少。1.SQL语句映射1)@Insert:实现新增功能 这个方法是在mapper接口......