首页 > 其他分享 >计算机网络基础-传输层介绍

计算机网络基础-传输层介绍

时间:2024-05-28 21:00:26浏览次数:14  
标签:发送 UDP ACK 报文 TCP 计算机网络 介绍 传输层

目录

一、传输层介绍

1、传输层概念

2、传输层主要功能

二、TCP协议

1、TCP协议介绍

2、TCP报文格式

3、TCP的三次握手

3.1、TCP三次握手流程图

​3.2、TCP三次握手详解

4、TCP的四次挥手

      4.1、TCP四次挥手流程图

     4.2、TCP四次挥手详解

 5、TCP常见端口号以及功能

三、UDP协议

1、UDP协议介绍

2、UDP协议的功能

3、UDP报文的首部格式

四、总结


一、传输层介绍

1、传输层概念

传输层是计算机网络体系结构中的中间一层,负责在网络中不同主机之间提供端到端的数据传输服务。它位于网络层和应用层之间,为应用程序提供了一种透明的数据传输机制。

2、传输层主要功能

  • 数据分段
  • 可靠的数据传输
  • 错误检测(校验)
  • 流量控制

二、TCP协议

1、TCP协议介绍

TCP是面向连接的、可靠的进程到进程通信的协议。TCP提供全双工服务,即数据可在同一时间双向传输,每一个TCP都有发送缓存和接收缓存,用来临时存储数据。

2、TCP报文格式

  • 源端口号:发送方的端口号,用于标识发送方的应用程序。
  • 目标端口号:接收端进程的端口号。接收端收到数据段后,根据这个端口号来确定把数据送给哪个应用程序的进程
  • 序号:发送端为每个字节进行编号,便于接收端正确重组;用于标识TCP数据流中第一个字节的序列号。
  • 确认号:对发送端的确认信息。表示期望接收的下一个字节的序列号,用于确认已接收到的数据。
  • 首部长度:用它可以确定TCP首部数据结构的字节长度。一般情况下TCP首部是20字节,但首部长度最大可以扩展为60字节。
  • 控制位:
  • 窗口大小:是指发送方在等待接收方确认的数据量。窗口大小定义了在不接收确认之前发送方可以发送的数据量。
  • 校验和:用于检验TCP头部和数据的完整性。
  • 紧急指针:仅在URG标志被设置时有效,用于指示紧急数据的边界。
  • 选项:可选字段,用于在TCP头部中包含一些可选信息,如最大段大小、时间戳等。

3、TCP的三次握手

3.1、TCP三次握手流程图
3.2、TCP三次握手详解
  • PC1主动向PC2发出请求报文,随机产生序号为x,并且同步位(SYN)为1。
  • PC2收到PC1的请求报文后,发送SYN+ACK报文,并且随机产生一个序号为y,Ack确认号为x+1,且同步位为1,确认位为1(SYN=1,ACK=1)。
  • PC1收到PC2的回复后,发送ACK报文,序号(Seq)为 x+1,确认号(Ack)为 y+1,确认位(ACK)为1。

4、TCP的四次挥手

      4.1、TCP四次挥手流程图

     4.2、TCP四次挥手详解
  • 第一次挥手:PC1发送一个FIN/ACK报文给PC2,表示PC1不再发送数据,并请求关闭连接。
  • 第二次挥手:PC2收到PC1的信息后,发送ACK报文,且确认位为1(ACK=1)
  • 第三次挥手:当PC2数据接受完,会发送FIN/ACK报文给PC1,且结束标志位1,确认位为1(FIN=1,ACK=1)表示自己数据已经接收完毕。
  • 第四次挥手:PC1收到PC2回复的报文后,发送ACK报文,且确认位为1(ACK=1)

 5、TCP常见端口号以及功能

 

三、UDP协议

1、UDP协议介绍

UDP 是一种简单的面向无连接的传输层协议,它提供了在网络上发送数据的功能,但不提供可靠性、流量控制、错误恢复或顺序传输等功能。UDP被设计为尽可能简单和轻量,适用于一些对实时性要求较高、数据量较小、容忍少量丢失的应用场景,比如语音通话、视频流等。

2、UDP协议的功能

  • 面向无连接
  • 提供不可靠网络访问
  • 传输性能高
  • 无数据恢复性
  • 花费的开销小

3、UDP报文的首部格式

四、总结

标签:发送,UDP,ACK,报文,TCP,计算机网络,介绍,传输层
From: https://blog.csdn.net/A6985HG/article/details/139274784

相关文章

  • GitHub介绍
    GitHub介绍:GitHub使用Git存储库,并为开发人员提供工具,通过命令行功能、议题(线程讨论)、拉取请求、代码审查等等。通过GitHub流程等协作层,GitHub改变了软件的构建方式。GitHub将协作直接构建到开发过程中。工作组织到存储库中,开发人员可以在其中概述要求或方向。Git允许......
  • 介绍图片懒加载的几种实现方法
    在JavaScript中,懒加载(LazyLoading)主要用于延迟加载资源,例如图片、视频、音频、脚本等,直到它们真正需要时才加载。这样可以提高页面的加载速度和性能。以下是几种常见的JavaScript懒加载实现方式:1.监听滚动事件通过监听滚动事件来实现图片懒加载是一种传统并且常见的方......
  • Jakarta Bean Validation 规范介绍及其API使用以及与Spring Validator之间的关系
    JakartaBeanValidation规范1.BeanValidation的前世今生BeanValidation规范最早在OracleJavaEE下维护。2017年11月,Oracle将JavaEE移交给Eclipse基金会。2018年3月5日,Eclipse基金会宣布JavaEE(EnterpriseEdition)被更名为JakartaEE。随着JSR-303......
  • 源项目管理github介绍
    一、Git和GithubGit:一个免费、开源的版本控制软件Github:全球最大的社交编程及代码托管网站(https://github.com/)。Github可以托管各种git库,并提供一个web界面(用户名.github.io/仓库名)两者关系:Git是版本控制软件,Github是项目代码托管的平台,借助git来管理项目......
  • Qt UI界面组件介绍
    1.布局类(4种) 2.固定弹簧类(2种)(不随布局变化) 3.按钮类(6种) 4.容器类(10种)GroupBox类似于win7的日历框ToolBox类似于QQ的好友列表Tabwidget类似于 5.输入窗() 6.显示窗()......
  • 源代码管理工具Github介绍
    GitHub介绍什么是GitHubGitHub是一个基于Git版本控制系统的在线代码托管平台。它于2008年由TomPreston-Werner、ChrisWanstrath、PJHyett和ScottChacon创建,并于2018年被微软收购。GitHub为开发者提供了一个协作开发和版本控制的工具,让他们能够更轻松地管理和共享代码。Git......
  • 代码管理工具 TFS 介绍
    一、概述TFS(TeamFoundationServer)是微软公司推出的一款集成化应用生命周期管理(ALM)工具,主要用于软件开发过程中的版本控制、项目管理、构建自动化和测试管理等。它旨在帮助开发团队更高效地协同工作,提升软件开发的质量和速度。TFS最早发布于2005年,经过多年的发展和迭代,已成为功......
  • RunnerGo V4.6.0 新增功能介绍
    RunnerGo最新V4.6.0版本不仅对原有功能进行了深度优化和改进,还新增了一些新功能。 UI插件:浮窗升级,优化浏览体验此次更新UI插件全新升级至V2.1版本。新版取消了页面内右下角按钮的设计,在浏览器右侧开启了浮窗,从而更方便客户操作浏览器界面。 RunnerGoUI插件本次升级前&后......
  • Docker_Docker介绍1
    一、docker概述1、我们写的代码会接触到好几个环境:开发环境、测试环境以及生产环境: 2、概念Docker是一个开源的应用容器引擎诞生于2013年初,基于Go语言实现,dotCloud公司出品(后改名为DockerInc)Docker可以让开发者打包他们的应用以及依赖包到一个轻......
  • GitHub介绍
    简介GitHub是一个面向开源及私有软件项目的托管平台,因其只支持Git作为唯一的版本库格式进行托管而得名。该平台自2008年4月10日正式上线以来,已成为全球软件开发者和组织机构协作的重要工具。Github作为一个基于Git的代码托管平台,不仅提供版本控制的功能,还为开发者提供了一系列的......