传输层解析

news2024/11/14 11:18:16

目录

传输层解析

传输层概述

传输层的作用

传输层的协议

TCP协议概述

UDP协议概述

TCP协议

TCP的封装格式

TCP的连接与断开

TCP的流控与差错控制

TCP的计时器

TCP的应用

UDP协议

UDP的封装格式

UDP的应用

UDP的流程与差错控制


传输层解析

传输层概述

传输层的作用

  • 网络层提供点到点的连接
  • 传输层提供端到端的连接
    • 定义了端口号0~65535
    • 进程到进程通信

传输层的协议

TCP协议概述

  • TCP(Transmission Contorl Protocol)
    • 传输控制协议
    • 可靠的、面向连接的协议
    • 传输效率低

UDP协议概述

  • UDP(User Datagram Protocol)
    • 用户数据报协议
    • 不可靠的、无连接的服务
    • 传输效率高

TCP协议

TCP的封装格式

  • TCP报文段
    • 将若干个字节构成一个分组
  • TCP报文段封装在IP数据报中

  • 序列号:发送端为每个字节编号,便于接收端正确重组
  • 确认号:用于确认发送端的信息
  • 窗口大小:用于说明本地可接收数据段的数目,窗口大小是可变的
  • 滑动窗口机制:通过滑动窗口大小来控制当前接口接收数据的多少
  • SYN:同步位,TCP需要建立连接时将该值设为1
  • ACK:确认位,当该值为1时,用于确认发送方的数据
  • FIN:当TCP断开连接时将该位置为1
  • URG:紧急指针开关,当该值为1时,紧急指针字段才会出现
  • PSH:向上推送的快速推送开关,当该值为1时,数据直接推送给应用程序
  • RST:断开控制连接

TCP的连接与断开

  • TCP提供全双工服务

—— 即数据可在同一时间双向传输

—— 理解全双工,才能理解TCP连接与断开

  • TCP的连接:三次握手

第一次握手

客户端将首部的同步位SYN置为1,主动发送请求连接,随机产生一个值(初始序号)seq=x,并将该数据包发送给服务端,客户端进入请求连接(SYN_SENT)的状态,等待服务端确认。

第二次握手

服务端收到数据包后由SYN=1知道客户端请求建立连接,服务端将在确认报文段中发送同步位SYN=1,确认位ACK=1,确认号ack=x+1,初始序号seq=y,并将该数据包发送给客户端以确认连接请求,服务端进入SYN_RCVD状态(中间状态)。

第三次握手

客户端收到确认后,检查确认号ack是否为x+1(说明服务端发送正常),确认报文段ACK是否为1(说明服务端接收正常),如果正确则将标志位ACK置为1,ack=y+1,并将该数据包发送给服务端,服务端检查ack是否为y+1,ACK是否为1,如果正确则连接建立成功,客户端和服务端进入ESTABLISHED(established已确认)状态,完成三次握手,随后客户端和服务端之间可以开始传输数据了。

  • TCP建立连接过程中的状态

  • TCP的断开:四次挥手

第一次挥手

客户端发送一个FIN,用来关闭客户端到服务端的数据传送,客户端进入FIN_WAIT_1状态。

第二次挥手

服务端收到FIN后,发送一个ACK给客户端,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),服务端进入CLOSE_WAIT状态。此时TCP链接处于半关闭状态,即客户端已经没有要发送的数据了,但服务端若发送数据,则客户端仍要接收。

第三次挥手

服务端发送一个FIN,用来关闭服务端到客户端的数据传送,服务端进入LAST_ACK状态。

第四次挥手

客户端收到FIN后,客户端进入TIME_WAIT状态,接着发送一个ACK给服务端,确认序号为收到序号+1,服务端进入CLOSED状态,完成四次挥手。

  • TCP的流控机制:活动窗口

TCP的流控与差错控制

  • TCP差错控制的3种方式

—— 校验和

—— 确认(对发送的数据进行确认,序列号和确认号)

—— 超时(计时器)

TCP的计时器

  • TCP的重传计时器

—— 为了控制丢失的数据段

在客户端向服务端建立连接时,在发送连接的时候计时器就已经开启,当服务端的确认号ACK在时间期限内发送,则继续进行三次握手;如果超过时间期限服务端还没有发送ACK,则客户端在规定时间期限后,在向服务端发送一个连接请求。

  • TCP的保活计时器

—— 防止两个TCP连接之间长时间的空闲

  • TCP的时间等待计时器

—— 连接终止期间使用,当发送了最后一个ACK后,不立即关闭连接,而是等待一段时间,保证能接收到重复的FIN数据段

TCP的应用

端口号

协议

作用

21

FTP

文件传输协议,用于文件上传和下载

22

SSH

用于远程登录,管理网络设备

23

Telnet

用于远程登录及控制

25

SMTP

简单邮件传输协议,用于发送邮件

53

DNS

域名解析服务,当用户输入网站的名称后,由DNS负责将它解析成IP地址

80

HTTP

超文本传输协议,通过http实现网络上超文本的传输

443

HTTPS

超文本传输协议,附带安全加密功能

UDP协议

UDP的封装格式

UDP的应用

端口

协议

说明

69

TFTP

简单文件传输协议

53

DNS

域名解析服务

123

NTP

网络时间协议

111

RPC

远程过程调用

UDP的流程与差错控制

  • UDP没有流控机制
  • UDP只有校验和来提供差错控制

—— 需要上层协议来提高差错控制:如TFTP协议

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/683374.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一招搞定电脑提示“由于找不到XINPUT1_3.dll,无法继续执行代码”问题

玩游戏或者运行程序软件的时候,电脑提示“由于找不到XINPUT1_3.dll,无法继续执行代码”是怎么回事呢?其实xinput1_3.dll是Windows操作系统中的一个动态链接库文件,它是DirectX API的一部分,用于提供对输入设备的支持&a…

CSS之定位

作用:灵活的改变盒子在网页中的位置 实现: 1.定位模式:position 2.边偏移:设置盒子的位置 leftrighttopbottom 相对定位 position: relative 特点: 不脱标,占用自己原来位置显示模式特点保持不变设…

【Python】异常处理 ⑤ ( 异常传递 | 异常处理顺序 | 代码示例 )

文章目录 一、Python 异常传递1、异常传递性2、代码示例 - 异常传递性3、代码示例 - 在指定位置处理异常 一、Python 异常传递 1、异常传递性 在 Python 中 , 异常是具有传递性的 , 该特性是 Python 中的一个重要特性 , 它使得代码更加健壮和可靠 ; 异常传递 指的是 在代码中捕…

提高办公效率用什么?表单开发工具好不好用?

在办公流程化繁盛发展的今天,越来越多的企业希望通过专业的软件和工具提升办公协作效率,朝着数字化和流程化管理的方向靠近。那么,如何提高办公效率?如何提高表格制作质量和效率?表单开发工具是专业的办公软件平台之一…

ORACLE透明网关ODBC连接MYSQL

客户需求oracle访问mysql数据,客户是linux7.3 11.2.0.4单实例,字符集GBK,mysql是5.7.31,字符集UTF8,下面结合网上的文档和自己的实践,配置过程如下 1.安装oracle透明网关 首先在oracle服务器上面安装ora…

【看完就会】Jmeter接口测试之断言详解

什么是断言? 断言,这是一个软件术语,简单来说,就是依靠软件程序自动判断操作结果的正确性。在接口测试中,这里的断言就是判断接口请求是否符合预期,从而判断接口用例是否执行通过。 你应该也听过一个概念…

【JS经验分享】你真的会写JS吗?满满干货,建议读三遍(1)

大家好,最近准备总结一下JS的经验,分享分享,有不对的欢迎讨论哈~ JS作为前端的基础技能,每一位前端开发都要运用熟练,但你真的会写JS吗?js全称JavaScript,是运行在浏览器上的脚本语言&#xff0…

SAP MM 物料主数据配置

物料主数据的管理不仅仅需要引起MM顾问的重视,同样也需要SAP的客户足够重视。 在SAP的实施过程中。客户通常需要将一个或多个历史系统的数据根据规则转换成SAP的主数据 一个实施项目的成功与否的基本就是,数据是否被正确的导入 1.配置一个新的物料类型…

三个美观的个人博客网站源码

怎么让源码更适合你?改造! 名称: 二开版UI漂亮的PHP博客论坛网站源码 介绍:可切换皮肤界面 下载:https://wwwf.lanzout.com/ihLNM10bfgnc 二、名称:Emlog Pro博客管理系统源码绿色版下载 介绍&#xff1…

【模拟CMOS集成电路设计】带隙基准(Bandgap)设计与仿真

【模拟CMOS集成电路设计】带隙基准(Bandgap)设计与仿真 前言一、 设计指标二、 电路分析三、 仿真测试3.1测试电路图3.2测试结果(1)基准温度系数仿真(2)瞬态启动仿真(3)静态电流仿真(4)线性调整率仿真(5)电源抑制PSR仿真 四、测试结果五、总结附录MOS器件…

地埋式积水监测系统在城市道路中的应用

伴随着汛期的到来,多地遭到大雨及暴雨的袭击,导致城市内涝现象频繁发生,使整个城市陷入瘫痪状态;交通道路受阻,严重影响了市民的生活,国家有关部门也因此出台了不少相关防涝政策。 积水监测系统可以加强城…

《WebGIS快速开发教程第二版》完成修订了

端午节过后各位小伙伴可能也要慢慢回归工作了,尽管不想工作不想烧脑但是没有办法,该干的活一样也少不了是吧🤪。 趁着空闲时间我完成了《WebGIS快速开发教程》这本书 的修改工作。相对于第一版,第二版进行了如下改动:…

加密与解密 调试篇 静态分析技术 (三)枚举/IDC/插件

目录 1.枚举类型 2.FLIRT 1.应用FLIRT签名 3.IDC脚本 IDC分析加密代码 4.插件 5.IDA调试器 1.加载目标文件 2.调试器界面 ​编辑 3.调试跟踪 4.断点 5.跟踪 1.枚举类型 这是一段c语言源代码 #include <stdio.h> int main(void) {enum weekday { MONDAY, TUE…

Redis入门(6)-ZSet

Redis中的Zset是有序的、可重复的&#xff08;元素不能重但score可重&#xff09;&#xff0c;其中每个元素都有一个分值score&#xff0c;Redis会根据其score对其进行从小到大的排序。 1.zadd key score member [score member] 添加元素 zadd subject 3 JAVA 2 C 1 mysql…

操作系统——磁盘调度算法的模拟与实现

一、实验题目 磁盘调度算法的模拟与实现 二、实验目的 (1) 了解磁盘结构以及磁盘上数据的组织方式。 (2) 掌握磁盘访问时间的计算方式。 (3) 掌握常用磁盘调度算法及其相关特性。 三、总体设计&#xff08;含背景知识或基本原理与算法、或模块介绍、设计步骤等&#xf…

计算机网络--网络编程(1)

简单认识一下传输层中的UDP和TCP&#xff1a; TCP&#xff1a;有链接&#xff0c;可靠传输&#xff0c;面向字节流&#xff0c;全双工 UDP&#xff1a;无连接&#xff0c;不可靠传输&#xff0c;面向数据报&#xff0c;全双工 有链接类似于打电话&#xff0c;通了就是有链接。…

软件测试项目中如何做好单元测试

前言 如《Unit Testing》书里提到&#xff0c;学习单元测试不应该仅仅停留在技术层面&#xff0c;比如你喜欢的测试框架&#xff0c;mocking 库等等&#xff0c;单元测试远远不止「写测试」这件事&#xff0c;你需要一直努力在单元测试中投入的时间回报最大化&#xff0c;尽量…

kotlin Flow系列之-SharedFlow

文章目录 前言SharedFlow之创建SharedFlow之缓存系统buffer&Slots SharedFlow源码发送数据接收数据SharedFlow存在的bug 前言 Kotlin中Flow被分为冷流 热流 两大类。比如经常被使用的flow{}函数就可以创建一个冷流。而本文的主角SharedFlow就是一个热流。冷流需要调用Flow…

Makefile基本原理详解及使用

1、什么是 Makefile 一个企业级项目&#xff0c;通常会有很多源文件&#xff0c;有时也会按功能、类型、模块分门别类的放在不同的目录中&#xff0c;有时候也会在一个目录里存放了多个程序的源代码。 这时&#xff0c;如何对这些代码的编译就成了个问题。Makefile 就是为这个问…

电路图中常见符号总结

前辈说不会FPGA电路原理图&#xff0c;就不能知道如何去控制、如何去实现 因此本篇记录看的原理图中见到的符号&#xff0c;虽然都很基础&#xff0c;但我都不会&#xff0c;难受&#xff0c;因此只能看一点记一点 >_< >_< >_< >_< >_&…