IP 地址与端口号
在互联网中,当主机 A 要与主机 B 进行通信的时候,主机 A 该如何在茫茫的互联网之中找到主机 B ?这就要通过 IP 地址来找到主机 B,IP 地址是用于标识网络上的主机或者其他的网络设备,简单来说 IP 地址就是一台主机或者其他网络设备在网络上的地址。有了 IP 地址,主机 A 就可以通过 主机 B 的 IP 地址来找到主机 B ,从而使得主机 A 与主机 B 的通信。
IP地址是通过一个 32 位的数字来表示的,由于 32 位的数字太长了不利于我们阅读,所以使用 '点分十进制' 的方式来表示 IP 地址。
端口号则是标识一台计算机中的进程,简单来说进程就是一台计算机上正在运行的程序,在一台主机上使用的程序有很多,当一台主机收到数据的时候就通过端口号交给对应的程序,例如:主机 A 使用 QQ 给 主机 B 发送消息,主机 A 要想完成这段通信需要知道主机 B 的IP地址,当知道了 主机 B 的 IP 地址后,主机 A 就能发送数据给主机 B ,当数据到达主机 B 的时候,主机 B 该如何知道这个数据要交给电脑中的哪个程序? 这时就需要端口号来找到对应的程序,假设 在主机 B 上 QQ 的端口号为 8888,这时有了 8888这个端口号 主机 B 就知道这个数据要交给 QQ。
端口号是0~65535范围的数字,在网络通信中,进程可以通过绑定⼀个端口号,来发送及接收网络数据。
协议与协议分层
假设主机 A 和主机 B 要进行网络通信,主机 A 给主机 B 发送了一些数据,当主机 B 收到了这些数据之后如何读懂这些数据? 这时就需要通信双方来约定一套 "规则",主机 A 根据这套 " 规则" 来发送数据,主机 B 根据这套 "规则" 来解析数据,这样主机 B 就能理解这些数据了。这套 "规则" 就是协议,协议就是约定通信双方数据交互的 "规则"。
网络通信是一件非常复杂的事情,要处理很多通信间的问题,如果只使用一个协议来约定网络中如何通信,则这个协议会非常复杂,所以把这一个大的协议拆分成多个小的协议,每个协议解决一类问题,再让这些协议之间互相协作。协议分层就是把功能类似的协议放在同一层,并规定协议之间不能随意交互,只有相邻层之间才能进行交互。
在网络协议分层中,具体是怎么分的:
1.OSI七层模型:
2. TCP/IP五层模型:
封装和分用
举一个简单的例子来解释封装和分用:
假设现在 A 通过 QQ 给 B 发送了一条消息 '在干嘛' 。
当 A 在 QQ 输入消息点击发送后, QQ 这个程序就会根据这里的应用层协议来构造一个 "应用层数据包" 。
构造好这个 "应用层数据包" 后 ,这时数据被传到传输层,这个 "应用层数据包" 就会在传输层被封装为 "传输层数据包" (在 "应用层数据包" 的基础上加上一个传输层的数据首部)。
同理,构造好这个 "传输层数据包" 后 ,这时数据被传到网络层,这个 "传输层数据包" 就会在网络层被封装为 "网络层数据包" (在 "传输层数据包" 的基础上加上一个网络层的数据首部)。
到了数据链路层后,这个 "数据包"会再次被封装上以太网帧头,和以太网帧尾 。
到了物理层后,网卡就会把上述 "数据包" 装换成 光信号/电信号/电磁波...来完成真正的数据传输。
在层与层之间传输的 "数据包" 在每层协议都要加上⼀个数据首部(header),称为封装。这些首部中就包含了⼀些类似于首部有多长,载荷(payload)有多长,上层协议是什么等信息。
当这个 "数据包" 通过网络传输到达 B 这里的时候, B 的电脑的网卡就接收这个数据,然后将这个数据上传给数据链路层,数据链路层就会对这个 "数据包" 进行解析,取出报头和载荷分析这个数据是丢弃/上传/转发.... (取出报头和载荷的过程就叫 分用),同理数据上传到网络层也会进行分用(取下IP报头 和 载荷) 进行分析,一直到应用层将数据解析出来 ,这时 B 就能看到 A 发的消息。
封装 和 分用就类似于 打包快递 和 拆快递 ,在数据转发中涉及到的交换机/路由器也会涉及到封装和分用。
客户端/服务器 请求/响应
在常见的网络数据传输场景下,把提供服务的一方进程,称为服务端,可以提供对外服务。把获取服务的一方进程,称为客户端。
请求是客户端向服务器发送的信息,用于请求某种服务或资源。
响应是服务器对客户端请求的反馈,包含请求处理的结果。
举个例子:假设我使用浏览器现在从百度上找图片。
我首先会在我电脑的浏览器上搜索要找图片的相关信息,例如我要找的图片是 "火影忍者" 相关的,当我在浏览器上输入 "火影忍者" 后,浏览器会向百度的服务器发送请求,请求我搜索的照片资源,百度的服务器收请求后会处理请求,并把处理好的请求响应给浏览器,这时浏览器就会收到百度服务器的响应(这些图片资源),就可以把这些图片展示出来,这时我使用的这个浏览器就是一个客户端,百度就是一个服务器。
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » 网络中的一些基本概念
发表评论 取消回复