【网络编程】计算机网络基础知识总结 | 运输层 |TCP协议

文章目录

  • 前言
  • 一、计算机网络层次结构
  • 二、网络层
  • 三、运输层
    • 3.1、TCP/IP协议介绍
    • 3.2、端口(协议端口号)
    • 3.3、套接字
    • 3.4、TCP实现原理
      • 3.4.1、TCP的特点
      • 3.4.2、停止等待协议
      • 3.4.3、滑动窗口协议
      • 3.4.4、拥塞控制
      • 3.4.5、TCP连接的三个阶段
    • 3.5、UDP实现原理


前言

本期内容重点复习一下以下三层:网络层,运输层,应用层
参考教材:计算机网络(博客中部分图片来自本书)
参考:chatgpt4

一、计算机网络层次结构

计算机网络的层次结构通常根据OSI(开放系统互联)模型或TCP/IP模型来进行划分。

OSI(开放系统互联)模型:该模型将计算机网络分为七层,自下而上依次是

物理层:负责传输比特流(即电压的高低、光的闪烁等)。

数据链路层:负责在网络设备之间传输数据帧(也就是数据包),并能够检测和纠正数据传输的错误。

网络层:负责处理数据包的发送和接收,包括包的路由选择。

传输层:负责处理端到端的数据传输。

会话层:负责在数据传输中设置和维护网络连接。

表示层:负责处理操作系统中数据的表示、安全和压缩问题。

应用层:负责处理特定应用程序的协议。

TCP/IP模型:该模型将计算机网络分为四层,自下而上依次是:

网络接口层:相当于OSI模型中的物理层和数据链路层,负责处理和网络媒体的硬件接口相关的所有事务。

网络层:相当于OSI模型中的网络层,负责处理IP地址和路由。

传输层:相当于OSI模型中的传输层,负责处理TCP和UDP协议。

应用层:相当于OSI模型中的会话层、表示层和应用层,负责处理所有特定的应用程序细节。

实际应用中,我们经常使用一个简化的五层网络模型,这个模型把OSI的七层模型进行了合并简化。五层模型自下而上依次是:

物理层:负责将比特流(即电压的高低、光的闪烁等)在物理媒介(如电缆、光纤)上进行传输。

数据链路层:负责在网络设备之间传输数据帧(也就是数据包),并能够检测和纠正数据传输的错误。

网络层:负责处理数据包的发送和接收,包括包的路由选择。

传输层:负责处理端到端的数据传输,例如TCP协议和UDP协议都工作在这一层。

应用层:这一层包含了OSI模型中的会话层、表示层和应用层,负责处理所有特定的应用程序细节。例如HTTP、FTP等协议都工作在这一层。

在这里插入图片描述

二、网络层

三、运输层

3.1、TCP/IP协议介绍

TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议)都是网络传输层的两种重要协议,它们都是用来发送数据包的,但是各自的特性和使用场景有很大的不同。

TCP(传输控制协议):

TCP是一种面向连接的协议,这意味着在数据传输前,发送方和接收方需要先建立连接,然后才能进行数据的发送和接收。这种方式可以确保数据的完整性和准确性。

TCP提供了数据包的顺序控制、流量控制、拥塞控制和错误检查等功能。这些控制机制确保了数据包能够正确、有序地到达目的地。

TCP的这些特性使它非常适合于对数据传输质量要求高的应用,例如网页浏览、文件传输、电子邮件等。

UDP(用户数据报协议):

UDP是一种无连接的协议,这意味着发送方发送数据时,不需要先建立连接。这种方式虽然不能保证数据包的到达和顺序,但是由于省去了建立连接的过程,使得数据传输的延迟更低。

UDP不提供数据包的顺序控制、流量控制、拥塞控制和错误检查等功能。这些特性使得UDP非常适合于实时性要求高,但对数据丢失可以容忍的应用,例如语音和视频通话、实时游戏等。

UDP的另一个特性是它支持广播和多播,这使得UDP非常适合于多点通信。

总的来说,TCP和UDP各有优劣,具体使用哪种协议取决于应用的具体需求。
在这里插入图片描述

3.2、端口(协议端口号)

在网络通信中,端口是一种抽象的软件结构,用来区分不同的进程或服务。端口是与IP地址配合使用的,一起构成了网络通信中的"地址和端口"的概念。在TCP/IP协议中,端口被标识为一个16位的数字,范围从0到65535。
通常,端口可以分为三个范围:

已知端口(Well Known Ports):这些是最常用的端口,范围是0-1023。许多常见的协议都在这个范围内,例如HTTP的端口80,HTTPS的端口443,FTP的端口21,SMTP的端口25等。

注册端口(Registered Ports):这些端口的范围是1024-49151。它们不是预留给特定服务的,但通常用于某些已知的应用。例如,MySQL默认的端口就是3306。

动态或私有端口(Dynamic or Private Ports):这些端口的范围是49152-65535。它们通常被用于动态端口分配,当一个客户端应用程序需要与服务器建立连接时,操作系统通常会从这个范围内选择一个可用的端口号。

当我们说一个服务器在监听某个端口,实际上就是说服务器上的某个服务正在等待从那个端口号上到来的连接请求。同样,当一个客户端程序连接到服务器的某个端口时,实际上是在请求使用服务器上绑定到那个端口的服务。
使用不同的端口号,我们可以在同一台计算机上运行多个网络服务,每个服务可以独立地接收和处理连接请求。这就是端口的主要作用。

另外,你也需要确保你的程序在运行时具有足够的权限来监听你选择的端口。在许多操作系统中,监听1024以下的端口需要管理员或root权限,但1024以上的端口通常可以由任何用户监听。

3.3、套接字

套接字(Socket)是计算机网络中用于描述IP地址和端口,以便能够进行网络通信的一种抽象概念。它是网络应用程序进行数据发送和接收的接口。简单来说,套接字就像是一个电话插孔,你可以通过它来接通电话线(网络连接),并进行通话(数据传输)。
套接字最初由伯克利(Berkeley)UNIX操作系统开发并引入,现在已经被所有主流的操作系统所采用。在编程中,我们通常通过套接字API(应用程序接口)来进行网络编程。套接字API提供了一组函数,使得程序员能够在他们的程序中创建套接字、连接到远程套接字、发送和接收数据等。
套接字可以支持不同的通信协议,最常见的有TCP(传输控制协议)和UDP(用户数据报协议)。TCP套接字提供了一种面向连接的、可靠的数据传输服务,而UDP套接字则提供了一种无连接的、不可靠的数据传输服务。
一个套接字被定义为一个IP地址和一个端口号的组合 例如,如果你的计算机的IP地址是192.168.1.100,你的Web服务器程序正在监听端口80,那么你可以说你的Web服务器的套接字是192.168.1.100:80。当一个客户端程序想要连接到你的服务器时,它需要知道这个套接字,以便能够正确地向你的服务器发送请求。

3.4、TCP实现原理

3.4.1、TCP的特点

TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。以下是TCP的一些主要特点和工作原理:

面向连接 在数据传输开始之前,TCP需要在发送端和接收端之间建立一个连接。这个过程通常被称为"三次握手"。一旦连接建立,所有的数据传输都在这个连接上进行,直到连接被关闭。

可靠传输 TCP通过使用确认(ACK)机制、序列号、重传机制和错误检查来确保数据的可靠传输。如果发送端没有收到数据包的确认,那么它会重新发送数据包。

流量控制 TCP使用窗口机制来进行流量控制,防止接收端被发送端发送的数据淹没。窗口的大小表明了接收端当前能接受的数据量。

拥塞控制 当网络出现拥塞时,TCP会减少数据的发送速率,避免无效的重传和网络资源的浪费。当网络恢复正常时,TCP会逐渐增加数据的发送速率。

全双工通信 TCP连接的两端都能发送和接收数据。这意味着在一个TCP连接中,数据可以在两个方向上同时传输。

字节流 TCP不关心应用层的消息边界,把应用层传下来的数据看作仅仅是一个连续的字节流。

这些特点使得TCP非常适合那些需要高可靠性的应用,例如Web浏览、电子邮件、文件传输等。然而,这些特性也使得TCP比一些其他的传输协议(如UDP)更复杂,有时候也更慢。


3.4.2、停止等待协议

停止等待协议是一种基本的流量控制协议,它也是TCP中可靠数据传输的基础。在停止等待协议中,发送端每次只发送一个数据包,然后停止发送并等待接收端的确认。在收到确认后,发送端再发送下一个数据包。
以下是停止等待协议的基本步骤:

发送端发送一个数据包到接收端。

发送端启动一个定时器,等待接收端的确认。这个定时器的时间通常比数据包在网络中传输的平均时间要长一些,以便给接收端处理数据包和发送确认的时间。

如果在定时器超时之前,发送端收到了接收端的确认,那么它会发送下一个数据包。

如果定时器超时,但发送端还没有收到确认,那么发送端会认为数据包已经丢失,然后重新发送这个数据包。

停止等待协议的优点是它简单易懂,实现也相对简单。它能够确保数据包不会因为网络的问题而丢失,并且能够防止发送端发送数据的速度过快,导致接收端无法处理。
然而,停止等待协议的效率不高,特别是在网络延迟大的情况下。发送端每次只发送一个数据包,然后就停下来等待确认,这意味着网络的利用率很低,尤其是当网络的带宽很大,而数据包的大小相对较小的时候。为了解决这个问题,人们开发了一些更高效的流量控制协议,例如滑动窗口协议。

3.4.3、滑动窗口协议

滑动窗口协议是一种流量控制协议,它可以提高网络的利用率,并且还能保证数据的可靠传输。这种协议在TCP(传输控制协议)中被广泛使用。
滑动窗口协议的基本思想是,发送端和接收端各自维护一个窗口。发送窗口包含了可以发送的数据段,接收窗口包含了可以接收的数据段。窗口的大小可以动态调整,以适应网络的条件。
以下是滑动窗口协议的基本步骤:

在开始时,发送端的窗口包含了一些数据段,这些数据段可以立即发送。发送端发送窗口中的数据段后,将这些数据段标记为已发送但未确认。

当接收端收到一个数据段,它会发送一个确认回去。确认中包含了接收端期望接收的下一个数据段的序列号,以及接收窗口的剩余大小。

当发送端收到一个确认,它会更新它的窗口。已被确认的数据段会从窗口中移除,窗口会向前滑动,以包含新的可以发送的数据段。窗口的大小可能会根据接收端的反馈(即接收窗口的剩余大小)进行调整。

如果一个数据段的确认在一定时间内没有收到,那么发送端会重新发送这个数据段。这是通过超时重传机制来实现的。

滑动窗口协议不仅可以保证数据的可靠传输(通过确认和重传机制),而且还可以有效地控制数据的发送速度(通过窗口大小的调整),以防止发送端发送数据过快,导致接收端无法处理。这使得滑动窗口协议在各种网络条件下都能提供高效的数据传输。


流量控制是计算机网络中的一个关键概念,它指的是一种技术或一组机制,用于防止发送端发送数据的速度超过接收端处理数据的能力。
如果没有流量控制,发送端可能会以接收端无法处理的速度发送数据,这将导致接收端的缓冲区溢出,进而丢失数据。因此,流量控制是网络通信中保证数据可靠传输的重要手段之一。
流量控制可以在不同的网络层次实现,例如在数据链路层(如X.25协议)或者传输层(如TCP协议)。
在TCP中,流量控制是通过滑动窗口协议来实现的。每个TCP连接都有一个关联的接收窗口,该窗口的大小表示接收端当前还能接收多少数据。当接收端处理完一部分数据并释放了缓冲区空间后,它会通过确认信息告诉发送端,从而增大发送端的发送窗口。通过动态调整窗口大小,TCP可以根据接收端的处理能力和网络的拥塞程度来控制数据的发送速度。
总的来说,流量控制是一个非常重要的网络功能,它可以保护网络资源,防止网络拥塞,以及保证数据的可靠传输。

3.4.4、拥塞控制

拥塞控制是TCP(传输控制协议)的一种机制,用于防止网络拥塞。当网络中的数据包数量过多,超过网络的承载能力时,就会出现网络拥塞。网络拥塞可能导致数据包的延迟增加,甚至丢失。因此,拥塞控制的目标是避免过多的数据进入网络,以保持网络的质量。
TCP的拥塞控制主要有四种算法:慢启动、拥塞避免、快重传和快恢复。这些算法共同工作,以动态地调整每个TCP连接的拥塞窗口大小。拥塞窗口决定了发送端可以在没有收到确认的情况下发送多少数据。
以下是这四种算法的基本工作原理:

慢启动:当一个TCP连接开始时,拥塞窗口的大小被设置为一个很小的值。然后,每当发送端接收到一个确认,它就会将拥塞窗口大小加倍。这样,拥塞窗口的大小就会以指数方式增长,直到达到一个阈值,或者发生了数据包丢失。

拥塞避免:当拥塞窗口达到阈值后,发送端就会进入拥塞避免阶段。在这个阶段,每当接收到一个确认,拥塞窗口的大小就会线性地增加。这样,拥塞窗口的增长速度就会减慢,以避免过快地增加网络的负载。

快重传:当发送端连续收到三个重复的确认(这通常表示有一个数据包丢失)时,它不会等待超时重传定时器,而是立即重新发送丢失的数据包。这样,就可以更快地恢复丢失的数据包。

快恢复:当发送端重新发送了丢失的数据包后,它会将阈值减半,然后立即进入拥塞避免阶段,而不是慢启动阶段。这样,就可以更快地恢复传输速度。

这四种算法共同工作,以适应网络的条件,保持高效的数据传输,同时避免网络拥塞。

3.4.5、TCP连接的三个阶段

一个TCP(传输控制协议)连接的生命周期主要包括以下几个阶段:

连接建立(Connection Establishment):这个阶段通常被称为“三次握手”(Three-Way Handshake)。首先,客户端发送一个带有SYN(Synchronize)标志的数据包给服务器,请求建立连接。然后,服务器回应一个带有SYN和ACK(Acknowledgement)标志的数据包,确认收到请求并同意建立连接。最后,客户端再发送一个带有ACK标志的数据包,确认收到服务器的回应。此时,TCP连接就被成功建立,可以开始传输数据。

数据传输(Data Transfer):在这个阶段,客户端和服务器可以互相发送数据。TCP保证了数据的可靠传输,通过序列号和确认机制保证数据按照正确的顺序到达,并通过流量控制和拥塞控制机制来适应网络的条件。

连接终止(Connection Termination):这个阶段通常被称为“四次挥手”(Four-Way Handshake)。首先,一方(通常是客户端)发送一个带有FIN(Finish)标志的数据包,请求关闭连接。然后,另一方(通常是服务器)回应一个带有ACK标志的数据包,确认收到请求。然后,另一方也发送一个带有FIN标志的数据包,请求关闭连接。最后,第一方再回应一个带有ACK标志的数据包,确认收到请求。此时,TCP连接就被成功关闭。

在这些阶段中,TCP通过复杂的算法和机制,保证了数据的可靠传输,使得应用程序可以像使用可靠的字节流一样使用网络。

3.5、UDP实现原理

UDP(用户数据报协议,User Datagram Protocol)是一个简单的无连接的传输层协议。与TCP相比,UDP更简单,开销更小,但是它不提供数据的可靠传输,也不提供流量控制或拥塞控制。因此,UDP通常用于那些对实时性要求高,但对数据丢失容忍度较高的应用,例如VoIP(语音通话)和在线游戏。
以下是UDP的基本实现原理:

封装数据:UDP将应用程序发送的数据封装在UDP数据报中。每个UDP数据报包括一个头部和一个数据部分。头部包含了源端口号、目标端口号、长度和校验和,这些信息用于数据的传输和接收。数据部分就是应用程序发送的数据。

发送数据:UDP数据报被封装在IP数据包中,然后通过IP网络发送给接收端。由于UDP是无连接的,所以发送数据时不需要建立和终止连接。UDP只是简单地将数据报发送出去,而不关心数据报是否能成功到达。

接收数据:当UDP数据报到达接收端时,接收端会根据头部的端口号将数据报传递给相应的应用程序。如果数据报的校验和错误,或者应用程序的接收缓冲区满了,那么数据报可能会被丢弃。

处理数据:应用程序接收到数据报后,可以立即处理数据。由于UDP不提供数据的顺序保证,所以应用程序需要自己处理数据的顺序问题。

总的来说,UDP提供了一种简单快速的数据传输方式,但是它不提供数据的可靠传输,也不提供流量控制或拥塞控制。因此,使用UDP的应用程序需要自己处理这些问题。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前OPPO高管王腾,担任小米中国区销售运营一部负责人

近日有媒体报道,小米手机中国市场的核心职位—小米中国区销售运营一部负责人发生变动。80后年轻干部王腾将接替跟随小米中国区销售运营一部总经理朱磊,主持该部日常工作,职位仍为副总经理,但向中国区总裁卢伟冰汇报。朱磊转任中国…

小米的人事调整颇为特别,被击败的前对手高管纷纷担任小米高管

小米又一次进行了人事调整,这次是中国区的三个销售运营部门,统一由王晓雁负责,向卢伟冰汇报。王晓雁是小辣椒手机的创始人,2019 年加入小米,曾负责小米的电商渠道,此前已有多个被小米击败的前中国手机品牌高…

港联证券|“牛市旗手”频遭股东减持 机构仍看好板块后市表现

5月8日,证券板块再迎爆发。截至收盘,中国银河盘中触及涨停,收盘涨超7%,中银证券涨超5%,信达证券、光大证券、招商证券涨超4%。板块回暖之际,多家券商二季度却遭遇股东减持。业内人士认为,减持计…

解读“疯子”马斯克

https://www.toutiao.com/a6703410527571280397/ 对每一个不被认可,被嘲讽,且遮掩住光芒,但坚持拼搏的前行者,我们都应抱有一丝敬意。 ——猛鼬 猛鼬原创第59篇 算算时间,自2011年一代天骄乔布斯病逝已过去8年&#…

Android 短信验证 SDK 接入(Mob SMSSDK)

博主声明: 转载请在开头附加本文链接及作者信息,并标记为转载。本文由博主 威威喵 原创,请多支持与指教。 本文首发于此 博主:威威喵 | 博客主页:https://blog.csdn.net/smile_running 短信验证接口有很多&#xf…

怎么快速在计算机植入病毒,怎样给别人的电脑植入病毒

太简单了。这是病毒植入系统的一种表现,你删了也没用,因为这种系统植入性的病毒一般是能够修改系统注册表的,所以你删掉它会通过注册表再重新创建一摸一样的文件。建议你用以下方法解决,如果这还不行,建议重装系统&…

chatgpt对编程的作用

1、将delphi代码转换成c代码。 请将以下代码转换成c语言 if (Joint.TrackingState TrackingState_Tracked) thenbeginHandState : Body.HandRightState;if (HandState HandState_Open) thenbeginWriteLn(Right hand is open);endelse if (HandState HandState_Closed) the…

安卓,上传图片不能调取照相机拍照

我们常见的上传文件或者图片 是使用的input <form><input type"file" name"pic" id"pic" /> </form>此时一个问题出现&#xff1a; 如果是上传照片图片&#xff0c;安卓机有一个问题&#xff0c;只能选取照片&#xff0c;不…

2023 年6月开发者调查统计结果——最流行的技术(1)

2023 年6月开发者调查统计结果——最流行的技术&#xff08;1&#xff09; 本文目录&#xff1a; 一、编程、脚本和标记语言 二、数据库 三、云平台 四、网络框架和技术 五、其他框架和库 六、其他工具 七、集成开发环境 八、异步工具 九、同步工具 ​十、操作系统 …

又一个开源便斩获 7k star 的新模型「GitHub 热点速览」

作者&#xff1a;HelloGitHub-小鱼干 Star 并不能代表什么&#xff0c;但是绝对能表示一个项目的受欢迎程度。就像刚开源一周就有 7k star 的新模型&#xff0c;输入文本 / 图像就能获得 3D 对象。除了这个新模型&#xff0c;本周还有一款新的 Web 3D 渲染引擎 Orillusion&…

您无法登录,因为您使用的登录方法......

您无法登录&#xff0c;因为您使用的登录方法在此计算机上不允许&#xff0c;请咨询管理员...... 计算机已加入到了域中就是无法登录到local计算机中报上面错误。 1、检查组策略里面拒绝登录的账号是否在列 2、这种方法可将就用 3、以上还是不太好用不是最终想要的结果 以上都…

关于VS无法登录账号问题

概述 最近发现安装vs2013社区版后&#xff0c;无法登录微软账号&#xff0c;通过搜索相关解决方法&#xff0c;发现修改注册表的方式有效&#xff0c;故记录如下。 步骤 打开注册表编辑器 执行win r操作&#xff0c;呼出运行窗口&#xff0c;输入regedit&#xff0c;点击确…

苹果计算机使用方法,不知道这10个Mac使用技巧,别说你会用苹果电脑

原标题&#xff1a;不知道这10个Mac使用技巧&#xff0c;别说你会用苹果电脑 虽然Mac的用户体验做的非常优秀&#xff0c;很多功能用户只需要下意识去使用即可&#xff0c;但还是有一些隐藏的比较深的小技巧&#xff0c;如果没人指点的话还真不一定知道。今天小编就为大家分享1…

MacOS - Mac电脑能用Windows键盘吗?

1.应用场景 主要用于了解熟悉 MacOS 的使用 及 搭配Windows键盘使用&#xff0c;以及外界鼠标和触控板的使用&#xff0c;为了达到使用电脑的最大化效率。 2.学习/操作 1. 文档阅读 https://jingyan.baidu.com/article/4dc40848f86d9489d846f13f.html 2. 整理输出 2.1 先问一…

苹果电脑如何同时运行Mac和Windows--pd18

如何同时运行Mac和Windows呢&#xff0c;这里为大家推荐pd18&#xff0c;全名Parallels Desktop 18虚拟机&#xff0c;是很火爆的一款软件&#xff0c;可以在Mac上无缝衔接Windows系统&#xff0c;并且不用重启&#xff0c;可以同时运行&#xff0c;设置不同的桌面&#xff0c;…

苹果笔记本不能用windows吗 如何让苹果电脑支持windows

很多时候&#xff0c;Mac用户在网站上下载的资源都是windows系统专属资源&#xff0c;例如&#xff1a;exe格式的可执行文件。Exe格式的文件是windows系统上的可执行文件&#xff0c;Mac系统并不支持直接打开windows程序&#xff0c;所以就需要借助一些“手段”&#xff0c;例如…

理财笔记 - 关于中概互联和中国互联

1、关注原因 因为朋友圈有人推荐中概互联指数基金&#xff08;大概在2018年末2019年初期那时候一份是1.1元左右&#xff09;&#xff0c;当然我没有参与&#xff0c;我手里没有闲散资金。我关注的主要原因是因为我自己处于IT圈子&#xff0c;对于互联网并不陌生&#xff0c;相…

易趋亮相 INSight 金融洞察力峰会,助力金融行业数字化转型

2023年3月23日&#xff0c;INSight年度洞察力峰会于北京圆满召开&#xff0c;易趋作为优秀项目管理工具厂商代表在金融领域拥有丰富的实施经验&#xff0c;也应邀出席本次峰会。 &#xff08;会议现场&#xff09; 本次峰会包含两个平行论坛&#xff0c;汇聚了数百位主流金融机…

全新ThihkPHP聚合支付系统源码+兼容全部易支付

正文: P聚合支付系统源码兼容世面上所有易支付系统&#xff0c;基于PHPMySQLThihkphp框架开发。 全响应式前端界面&#xff0c;简约易操作&#xff0c;安全便利快捷&#xff0c;为你稳定服务&#xff0c;功能包括资金记录、订单记录、收益统计和渠道分析。 程序: wwuef.lan…

金融量化交易场景下数据库如何改造?同花顺、弘源泰平真实案例分享

⬆️ 点击图片&#xff0c;与专业的解决方案架构师聊一聊 在金融量化交易场景中&#xff0c;每天都会产生大量的交易记录和交易信息需要存储&#xff0c;同时对数据也有较高要求的查询需求&#xff0c;整体需求概括起来就是历史数据的存储、实时数据的接收以及数据的监控和分析…