每个人都有必要了解下网络通信协议,这对实际生活会有很大的帮助。
比如你家里的路由器,网络有问题了,你大概也能判断出哪里出了问题,懂得如何测试。
别人帮你设置网关,设置DNS啥的,你也了解他在做什么……
其实网络这块,新词太多,导致很多人听不明白,或者记不住。
计划通过这个笔记,额外备注[说人话]的方式,能让大家更明白,当然也是为了方便自己理解。
TCP/IP 通信的基本需求
说人话:
两台电脑之间要联网。
我们使用的一些应用程序要求我们在网络上从A点到B点传输数据。
传输控制协议/互联网协议(TCP/IP)网络提供了传输这些数据的框架,并且需要我们提供一些基本信息来移动这些数据。
TCP/IP五层软件模型概述
说人话:
把联网这个过程分成多段,每一段有自己的功能。比如五层模型,其实就是分成五段:网线或光缆(物理层)、光猫及Wi-Fi等(数据链路层)、设备连接(网络层)、电脑等设备(交换层)、电脑上要联网的软件(应用层)
虽然现在家里路由器有Wi-Fi,但因为路由器通信是根据IP来通信,所以还是属于设备连接那层(它可以同时连接多台设备,所以属于设备连接这层也很合理嘛)
交换机属于第二层,也就是电脑等设备那层,因为它是根据MAC来通信的。
吐槽:说人话挺难……上面说的很粗暴,其实真实情况更复杂点,上面只假设你家里每一层都只有单个设备。
我们需要以网络能够理解的标准格式提供TCP/IP所需的基本信息。这种格式由其五层软件模型提供。
每个层为TCP/IP提供了移动我们的数据所需的基本信息。
这些层根据需要执行的任务将功能分组。模型中的每个功能都旨在帮助特定层执行其工作。
每个层仅与相邻层通信。在较高层运行的软件无需了解或执行委托给较低层功能的任务,反之亦然。
例如,您为应用程序编写的软件只需要知道如何使用传输层请求与远程主机建立连接。它不需要知道在传输之前位的编码方式。这是物理层的工作。
您可能熟悉七层OSI模型。TCP/IP将这个模型简化为五层。OSI代表开放系统互连,这是一个标准的通信系统模型。七层OSI模型的前四层已经合并为TCP/IP模型的前两层。
至于五层单独的解释,可以自己上网看下,资料很多,这里就省略掉了。
发送数据使用网络层
说人话:
这里解释的其实是每一层和我们有啥关系。第五层,就是web服务器之间的交互,第四层更抽象,就是两台主机建立了连接,第三层通过IP地址传输数据包,第二层通过MAC地址交换真正的数据,第一层就是网线。
下面的章节会将具体的案例
现在我们了解了每个层的主要工作,让我们看看它们如何共同工作以在TCP/IP网络中发送和接收数据。
这是网络层如何共同生成帧的简化视图。较高层将信息传递给较低层。每一层都向传递给它的数据添加称为头部的信息。此头部包含层执行其工作所需的信息。我们将从应用层开始。
数据流(传输数据)
说人话:
这里讲讲如果你打开一个网页,你这边都做了啥。第五层,下载网页(也就是试图打开一个网页),第四层传输层给信息加上了端口,包括自己这应用及对方的,第三层网络层给信息加上了IP信息,第二层加上MAC地址等信息,然后通过网线去处理。
接收方其实就是反向操作处理。
要在TCP/IP网络中发送和接收数据,数据会传递给每个较低的层,直到形成完整的数据包。这是网络层如何共同生成帧的简化视图。较高层将信息传递给较低层。每一层都向传递给它的数据添加称为头部的信息。此头部包含层执行其工作所需的信息。
数据流(接收数据)
在接收数据时,网络层充当过滤器。
当帧在数据链路层接收时,目标MAC地址与其自身进行比较。如果接收到的数据不是针对该主机的,则会立即丢弃。如果匹配,则剥离头部,将负载(在这种情况下为数据包)转发到下一层。在这里,网络层检查目标IP地址是否与其自身匹配。如果匹配,则剥离头部,并将负载转发到下一层。在这里,传输层检查主机上是否运行有目标端口号为80的进程,这是符合的情况。因此,剥离头部,并将消息发送到应用层中进程号为80的进程。进程号80是在HTTP服务器中运行的功能。这完成了从一个应用程序到另一个应用程序的消息传输过程。
单词解释
TCP/IP: Transmission Control Protocol/Internet Protocol 传输控制协议/互联网协议
UDP: User Datagram Protocol (UDP) 用户数据报协议
MAC: Media Access Controller 媒体设备访问控制器
DNS: Domain Name System 域名系统
HTTP: Hypertext Transfer Protocol 超文本交换协议
DHCP: Dynamic Host Configuration Protocol 动态主机配置协议
SMTP: Simple Mail Transfer Protocol 邮件交换协议
SNMP: Simple Network Management Protocol 网络管理交换协议
SNTP: Simple Network Time Protocol 网络时间交换协议
TCP 和 UDP 有什么不同
说人话
UDP不靠谱,但快,TCP则相反,所以要看需求
有些应用程序要求对数据包进行可靠的有序传递。TCP协议提供了这种能力。它使用错误检测、重传和确认。该协议关心您的数据。
其他一些应用程序不关心每个数据包是否被接收。这些应用程序可以利用UDP的较低开销来实现更快的传输。
典型的TCP应用包括电子邮件和网页浏览,而典型的UDP应用包括VoIP和音乐流媒体。
TCP严格用于点对点或单播传输,而UDP还可以用于多播和广播传输。
在这里,我们展示了TCP和UDP头部中包含的所有信息。
请注意,TCP协议需要更多的信息和开销来保证数据传递。
DHCP 是个啥
说人话
动态从路由器获取位置信息
动态主机配置协议(DHCP) 动态主机配置协议(DHCP)是负责请求和提供IP地址的应用程序。
当检测到网络时,DHCP客户端会自动向DHCP服务器请求IP地址。
DHCP服务器通常在路由器中运行,并向DHCP客户端提供IP地址。
MAC地址 是什么
每个网卡都有一个MAC地址,前六位表示厂家,后四位表示生产序号。有网卡的设备,比如电脑,都会有一个MAC地址。
参考文档
Introduction to TCP/IP (Part 2) - Five Layer Model and Applications