自学教程 从零学编程

网络通信基础

一、什么是网络通信

网络通信,简单来说就是两台或多台设备之间通过网络介质交换数据。设备可以是电脑、手机、服务器、路由器、物联网设备等。

通信的本质:发送方把信息转换成二进制比特流,经过网络传输,到达接收方,再还原成原始信息。
想要通信成功,必须满足两个前提:

  1. 双方使用相同的网络协议(共同“语言”);
  2. 存在物理/逻辑通路(网线、光纤、Wi-Fi等传输介质)。

二、通信的几个基础概念

1. 主机

接入网络、能够收发数据的终端设备,我们称为主机,例如电脑、手机、服务器。每一台主机在网络中都有标识。

2. IP 地址

IP地址是主机在网络层的身份编号,用来在互联网中定位一台主机,作用类似家庭住址。

  • IPv4:192.168.1.100,点分十进制;
  • IPv6:解决IPv4地址枯竭问题,地址更长。

注意:IP地址定位到主机,但一台主机上会同时运行很多程序(浏览器、微信等),IP只能找到机器,不能找到具体应用。

3. 端口号(Port)

端口号用来定位一台主机上具体的进程/应用程序,范围:0 ~ 65535。

  • 知名端口:0 ~ 1023,系统预留,例如80端口HTTP,443端口HTTPS,22端口SSH;
  • 动态端口:1024 ~ 65535,客户端程序临时使用。

IP + 端口号 = 套接字(Socket),可以唯一标识网络上一个应用服务。

4. MAC地址

MAC地址(物理地址)是网卡出厂固化的硬件地址,用于同一个局域网内部识别设备。

  • 格式:00:11:22:aa:bb:cc;
  • 工作范围:仅在当前局域网内生效,跨网段通信时,MAC地址会不断变化。

5. 客户端与服务端

网络通信最常见模型:C/S(客户端/服务端)模型

  • 服务端:一直监听某个端口,被动等待连接,提供服务(Web服务器、数据库);
  • 客户端:主动发起请求,向服务端索取数据(浏览器、APP)。

还有B/S模型(浏览器/服务端),属于C/S的子集,客户端就是浏览器。

三、数据封装与解封装(通信核心流程)

数据在发送主机从上往下穿过TCP/IP四层模型,每一层都会增加当前层的头部信息,这个过程叫封装;
到达目标主机后,从下往上,逐层剥离头部,提取上层数据,称为解封装。

以浏览器访问网页为例:

  1. 应用层:浏览器生成HTTP请求报文(原始数据)
  2. 传输层:添加TCP头部(源端口、目标端口、序号等),组成TCP段
  3. 网际层:添加IP头部(源IP、目标IP),组成IP数据包
  4. 网络接口层:添加以太网头部(源MAC、目标MAC),组成数据帧
  5. 转换成比特流,通过网线/Wi-Fi发送出去

接收端反向操作:
网络接口层 → 剥掉以太网头 → 网际层剥IP头 → 传输层剥TCP头 → 最后把HTTP报文交给浏览器。

一句话记忆:发送:从上到下,层层加头;接收:从下到上,层层去头。

四、两种传输方式:单播、广播

  1. 单播:一对一通信,数据从一台主机发给另一台指定主机。日常上网、访问网站都是单播。
  2. 广播:一对所有,数据发给局域网内全部主机。ARP查找MAC地址就是广播。广播包不能穿过路由器。

补充:组播(多播),一对一组,多用于直播、视频流。

五、网络设备基础作用

  • 网卡:主机接入网络的硬件,负责二进制信号收发,拥有MAC地址;
  • 交换机:工作在数据链路层,局域网内部转发数据帧,依靠MAC地址转发;
  • 路由器:工作在网络层,连接多个不同网络,依靠IP地址做路由,隔离广播域;
  • 防火墙:基于策略过滤数据包,保障网络安全。

区分重点:交换机看MAC,路由器看IP。

六、数据传输完整简化示例

浏览器访问 www.runoops.com

  1. 先通过DNS协议,把域名解析成服务器IP;
  2. 客户端发起TCP连接(三次握手);
  3. 浏览器封装HTTP请求,逐层打包,发给服务器;
  4. 服务器收到数据包,逐层解封装,读取HTTP请求;
  5. 服务器构造HTTP响应,封装后回传给客户端;
  6. 客户端收到响应,解封装,渲染网页;
  7. 通信结束,断开TCP连接(四次挥手)。

七、小结

网络通信本质是主机间的数据交换。
IP定位主机,端口定位程序,MAC用于局域网设备识别。
数据传输遵循封装和解封装;交换机基于MAC转发,路由器基于IP路由。
客户端-服务端是最主流的通信模型。

思考题:MAC地址和IP地址有什么区别?什么时候用MAC,什么时候用IP?

标签:

0 条笔记