笔记/TCP/IP四层模型
文章目录
- The Link Layer 链路层
- 载波侦听多路访问/冲突检测 (CSMA/CD)
- 令牌方式(Token)
- The Internetwork Layer(IP) 网络层
- 路由器:数据包的“交通枢纽”
- IP层非绝对可靠
- The Transport Layer (TCP) 传输层
- 消息的重组与确认
- 发送窗口与流量控制
- The Application Layer 应用层
- 互联网应用的演变
- 客户端与服务器模式
- 应用协议
- Stacking the layers
- 层次的运行位置与用户交互
- 路由器的工作层次
- 分层模型的优势
- TCP四层模型和OSI七层模型比较 
The Link Layer 链路层
互联网架构的最底层是链路层。之所以称其为“最低层”,是因为它与物理网络介质最为接近。链路层通常通过电线、光纤电缆或无线电信号传输数据。
链路层负责将计算机连接到本地网络,并实现数据在单跳(a single hop)内的传输。目前最常见的链路层技术是无线网络。
载波侦听多路访问/冲突检测 (CSMA/CD)
为了解决多台计算机同时发送数据的问题,工程师设计了 “载波侦听多路访问/冲突检测” (CSMA/CD) 机制:
-
载波侦听 (Carrier Sense):当计算机要发送数据时,它首先侦听网络上是否有其他计算机正在发送数据。
-
发送与侦听:如果网络空闲,您的计算机开始发送数据。同时,它会侦听是否能收到自己发送的数据。
-
冲突检测 (Collision Detection):如果两台计算机大约同时开始发送数据,数据就会发生冲突,您的计算机将无法收到自己的数据。
-
停止与重试:检测到冲突后,两台计算机都会停止传输,等待一段不同的时间后重试发送,以减少再次冲突的可能性。
-
暂停与让步:当您的计算机发送完一个数据包后,它会暂停,给其他等待的计算机发送数据的机会。如果其他计算机开始发送,您的计算机将等待其数据包发送完毕后再尝试发送下一个。
CSMA/CD 机制在只有一台计算机发送数据时能高效利用共享网络,在多台计算机同时发送数据时也能确保公平共享链路。
令牌方式(Token)
有时,当链路层有许多传输站点,且需要长时间以接近100%的效率运行时,设计会采取一种不同的方法。在这种方法中,存在一个令牌(token),它指示每个站点何时有机会传输数据。
当一个站点接收到令牌并有数据包要发送时,它会发送数据包。一旦数据包发送完毕,该站点就会放弃令牌,并等待令牌再次回到自己手中。如果没有站点有数据要发送,令牌会尽可能快地在计算机之间传递。就像一群人开会,他们通过围坐一圈传递一个小球来交流,只有手握小球的人才能发言。当你拿到球并有话要说时,你简短地发言(传输一个词语数据包),然后把球传下去:
令牌方式最适合用于卫星链路或海底光纤链路等媒介,在这些媒介上检测冲突可能耗时过长或成本过高,且需要高效率运行的场景。
The Internetwork Layer(IP) 网络层
互联网协议层将我们的网络从单跳(链路层)扩展为一系列的跳跃,使得数据包能够快速高效地从您的计算机路由到目的IP地址,并最终返回到您的计算机。
路由器:数据包的“交通枢纽”
当您的数据包从起点传送到目的地时,它也会经过多个“站点”,在这些地方会决定您的数据包将转发到哪个输出链路。对于数据包而言,我们称这些地方为路由器(router)。就像火车站一样,路由器也有许多输入和输出链路。有些链路可能是光纤,有些可能是卫星,还有些可能是无线。路由器的任务是确保数据包通过路由器并最终到达正确的出站链路层。一个典型的数据包从源到目的地会经过大约5到20个路由器。
路由器能够快速确定数据包的出站链路,因为每个数据包都被标记了其最终的目的地址。这被称为互联网协议地址(Internet Protocol Address),简称IP地址。我们精心设计IP地址,以使路由器转发数据包的工作尽可能高效。
IP层非绝对可靠
IP层并非100%可靠。数据包可能会因为瞬时中断而丢失,或者因为网络暂时“混淆”了数据包需要经过的路径。您系统稍后发送的数据包可能会找到更快的网络路径,从而比您系统早前发送的数据包先到达。设计IP层使其永不丢失数据包并确保数据包按序到达,这看起来很诱人,但这几乎会使得IP层无法处理连接如此众多系统所涉及的极端复杂性。
因此,我们没有对IP层提出过高的要求,而是将数据包丢失和数据包乱序到达的问题留给了上一层,即传输层来解决.
The Transport Layer (TCP) 传输层
互联网层(Internetwork layer)负责将数据包从源地址路由到目的地址,跨越多个网络跳。然而,有时数据包会丢失或严重延迟,或者由于后续数据包找到更快的路径而乱序到达目的地。
消息的重组与确认
每个数据包都包含源计算机地址、目的计算机地址以及一个偏移量(offset),表明该数据包在原始消息中的位置。通过这些信息和数据包长度,即使数据包乱序到达,目的计算机也能重构原始消息。
当目的计算机重构并把消息交付给接收应用程序时,它会定期向源计算机发送确认信息(acknowledgement),告知已接收和重构了多少消息。如果目的计算机发现重构的消息有部分缺失,这可能意味着这些数据包丢失或严重延迟。稍等片刻后,目的计算机就会向源计算机发送请求,重传那些似乎丢失的数据。
发送窗口与流量控制
发送方计算机必须存储已发送的原始消息副本,直到收到目的计算机的成功接收确认。一旦源计算机收到某部分消息的成功接收确认,就可以丢弃已确认的数据,并发送更多数据。
源计算机在等待确认前发送的数据量称为窗口大小(window size)。
-
如果窗口大小太小,数据传输会变慢,因为源计算机总是在等待确认。
-
如果源计算机在等待确认前发送太多数据,可能会因为过载路由器或长距离通信线路而无意中造成流量问题。
为了解决这个问题,传输层采用了智能策略:
-
初始时:保持窗口大小较小。
-
动态调整:通过计时接收第一个确认所需的时间。如果确认回得快,源计算机就会缓慢增加窗口大小;如果确认回得慢,源计算机就会保持窗口大小较小,以避免网络过载。
这种策略意味着,当网络连接高速且负载较轻时,数据将快速发送;而当网络负载较重或连接速度慢时,数据传输速度会相应降低,以适应源计算机和目的计算机之间网络连接的限制。
The Application Layer 应用层
链路层、互联网层和传输层协同工作,确保数据能在共享的网络之间快速、可靠地传输。有了这种可靠的数据传输能力,接下来的问题就是:我们可以构建哪些网络应用来利用这些网络连接呢?
互联网应用的演变
-
20世纪80年代中期:最早广泛使用的互联网应用允许用户远程登录电脑、在电脑间传输文件、发送邮件,甚至进行实时文本聊天。
-
20世纪90年代初:随着互联网用户增多以及计算机处理图像能力的提升,欧洲核子研究中心(CERN)的科学家开发了** 万维网(World Wide Web)**应用。万维网主要专注于阅读和编辑带有图像的网络超文本文档。
-
如今:万维网是全球最常用的网络应用,但所有早期的互联网应用仍然被广泛使用。
客户端与服务器模式
每个网络应用通常分为两部分:
-
“服务器”:运行在目的计算机上,等待传入的网络连接。
-
“客户端”:运行在源计算机上。
例如,当您使用Firefox、Chrome或Internet Explorer等软件浏览网页时,您运行的是一个“网页客户端”应用。这个客户端会连接到网页服务器,并显示存储在这些服务器上的页面和文档。您浏览器地址栏中显示的统一资源定位符(URLs)就是您的客户端联系的网页服务器,用于为您检索文档。
应用协议
在开发网络应用的服务器和客户端两部分时,我们还必须定义一个“应用协议”。这个协议描述了应用的两部分将如何通过网络交换消息。每种应用使用的协议都大相不同,并且是专门为满足该特定应用的需求而设计的。
Stacking the layers
我们通常将四个不同的层次(链路层、互联网层、传输层和应用层)堆叠显示,其中应用层在最顶端,链路层在最底端。这样显示的原因是每个层次都利用其上下相邻的层次来实现网络通信。
层次的运行位置与用户交互
- 客户端和服务器端:所有这四个层次都运行在您运行客户端应用程序(如浏览器)的计算机上,它们也同样运行在运行应用程序服务器的目的计算机上。
- 最终用户交互:作为最终用户,您与堆栈最顶层的应用程序进行交互。
- 底层连接:最底层的链路层代表了您的计算机与互联网其余部分之间的Wi-Fi、蜂窝或有线连接。
路由器的工作层次
路由器负责将您的数据包从一个地方转发到另一个地方,使其朝目的地移动。但路由器不理解传输层或应用层。它们仅在互联网层和链路层操作。互联网层的源地址和目的地址是路由器将您的数据包跨一系列链路(跳)传输到目的地所需的全部信息。传输层和应用层只有在互联网层将数据包成功交付到目的计算机后才开始发挥作用。
分层模型的优势
如果您想编写自己的网络应用程序,您很可能只需要与传输层对话,而完全不需要关注互联网层和链路层。尽管互联网层和链路层对于传输层的功能至关重要,但当您编写程序时,无需了解任何底层细节。这种分层的网络模型使得编写网络应用程序变得更加简单,因为许多将数据从一台计算机移动到另一台计算机的复杂细节都可以被忽略。
TCP四层模型和OSI七层模型比较 
参考:https://do1.dr-chuck.net/net-intro/EN_us/net-intro.pdf
博客内容如有错误欢迎指正~