网络通信基础(网络通信基本概念+TCP/IP 模型)

本文涉及的产品
云解析DNS-重点域名监控,免费拨测 20万次(价值200元)
简介: 网络通信基础(网络通信基本概念+TCP/IP 模型)

一、网络通信基本概念

网络互连的目的是进行网络通信,也即是网络数据传输,更具体一点,是网络主机中的不同进程间,基于网络传输数据。

1、局域网 & 广域网

局域网 LAN:Local Area Network 其中 local 标识局域网是本地,局部组建的一种私有网络。局域网内的主机之间能方便的进行网络通信,又称为内网;

广域网 WAN:Wide Area Network 通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了广域网。广域网内部的局域网都属于其子网。


所谓 “局域网” 和 “广域网” 只是一个相对的概念。如果属于全球化的公共型广域网,则称为互联网(又称公网,外网),属于广域网的一个子集。有时在不严格的环境下说的广域网,其实是指互联网。

2、IP地址

概念:IP地址主要用于标识网络主机、其他网络设备(如路由器)的网络地址。简单说,IP地址用于定位主机的网络地址。就像我们发送快递一样,需要知道对方的收货地址,快递员才能将包裹送到目的地。


格式:IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节),如:

01100100.00000100.00000101.00000110。常用“点分十进制”的方式来表示,即 a.b.c.d 的形式(a,b,c,d都是0~255之间的十进制整数)。如:100.4.5.6。


特殊 IP:127.*的IP地址用于本机环回(loop back)测试,IP 地址是127.0.0.1 本机环回主要用于本机到本机的网络通信(系统内部为了性能,不会走网络的方式传输),对于开发网络通信的程序(即网络编程)而言,常见的开发方式都是本机到本机的网络通信。

3、端口号

概念:端口号是用于标识网络通信中特定应用程序或服务的数字标识符。在网络通信过程中,数据通过不同的端口号来传输到正确的应用程序或服务。类似发送快递时,不光需要指定收货地址(IP地址),还需要指定收货人(端口号)。


格式:端口号是 0~65535 范围的数字,在网络通信中,进程可以通过绑定一个端口号,来发送及接收网络数据。

注意事项:同一主机两个不同的进程,不能绑定同一个端口号,但一个进程可以绑定多个端口号。

4、协议

有了 IP 地址和端口号,可以定位到网络中唯一的一个进程,但还存在一个问题,网络通信是基于二进制 0/1 数据来传输,如何告诉对方发送的数据是什么样的呢?


网络通信传输的数据类型可能有多种:图片,视频,文本等。同一个类型的数据,格式可能也不同,如发送一个文本字符串“你好!”:如何标识发送的数据是文本类型,及文本的编码格式呢?基于网络数据传输,需要使用协议来规定双方的数据格式。


概念:协议,网络协议的简称,网络协议是网络通信(即网络数据传输)经过的所有网络设备都必须共同遵从的一组约定、规则。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。协议(protocol)最终体现为在网络上传输的数据包的格式。

5、知名协议的默认端口

系统端口号范围为 0 ~ 65535,其中:0 ~ 1023 为知名端口号,这些端口预留给服务端程序绑定广泛使用的应用层协议,如:

  • 22端口:预留给SSH服务器绑定SSH协议
  • 21端口:预留给FTP服务器绑定FTP协议
  • 23端口:预留给Telnet服务器绑定Telnet协议
  • 80端口:预留给HTTP服务器绑定HTTP协议
  • 443端口:预留给HTTPS服务器绑定HTTPS协议

二、TCP/IP 五层模型

1、TCP/IP 协议簇

在网络通信中,面对复杂度的环境就需要约定复杂的协议,协议太过于复杂,可以拆分为多个协议,通过对拆分的协议进行分类,对不同的类别进行分层,就约定了层级和层级之间的调用关系:要求上层协议调用下层协议,下层协议给上次协议提供支持,不能跨层调用。

协议分层的好处

  1. 类似于面向接口编程:定义好两层间的接口规范,让双方遵循这个规范来对接。
  2. 对于使用方来说,并不关心提供方是如何实现的,只需要使用接口即可。
  3. 对于提供方来说,利用封装的特性,隐藏了实现的细节,只需要开放接口即可。

这里所说的 TCP/IP 协议是一种网络协议套件,它包含了多个协议,包括物理层数据链路层网络层传输层应用层 等多个层次。这些不同层次的协议共同构成了一个完整的网络协议体系。

TCP/IP通讯协议采用了五层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求:

  • 应用层:应用层是TCP/IP模型的最顶层,包含了各种网络应用程序,它主要关注的是传输过来的数据要干啥用。其中一种广泛使用的应用层协议 HTTP、HTTPS。
  • 传输层:负责两台主机之间的数据传输,不考虑中间路径,只关心起点和终点,能够确保数据可靠的从源主机发送到目标主机。比较常见的传输层协议有 TCP、UDP。
  • 网络层:负责地址管理和路由选择,进行两个遥远网络结点之间路径规划。例如在网络层 IP 协议中,通过IP地址来标识一台主机,并通过路由表的方式规划出两台主机之间的数据传输的线路(路由)。
  • 数据链路层:负责设备之间的数据帧的传送和识别,主要关注两个相邻结点之间的传输。例如通过物理地址(如MAC地址)在相邻节点之间传输。数据链路层最典型的协议 以太网协议。
  • 物理层:负责光/电信号的传递方式,通常指网络通信的基础设施。网线、光纤、网络接口等。

2、在协议分层的背景下,数据如何通过网络传输?

答案就是:封装和分用

  1. 封装:发送方发送数据,要把数据从上到下,依次交给对应的层次的协议,进行封装。
  2. 分用:接收方接收数据,要把数据从下到上,依次交给对应的层次的协议,进行解析。

(1)忽略中间转发过程的封装分用

以李华使用微信给小明发送一条消息“Hello world”为例。下面是李华发送消息的封装过程:

  1. 首先在应用层,李华主机上的微信应用程序拿到上述数据后,首先会使用相应的应用层协议,将数据封装为应用层数据包。
  2. 接着应用层调用传输层提供的 API 来处理这个数据,传输层拿到上述数据后,会使用传输层的协议对数据再次封装,上图以 UDP 协议为例。
  3. 传输层调用网络层,网络层拿到 UDP 数据包后,使用网络层协议继续进行封装,上图以 IP 协议为例。
  4. 网络层调用数据链路层,数据链路层拿到 IP 数据包后,使用数据链路层协议进行封装,上图用经典的以太网协议为例:
  5. 数据链路层调用物理层,物理层拿到以太网数据帧后,就将上述的 0/1 二进制数据转化为光信号、电信号等进行传输。

以下是小明接收消息的分用过程:

在物理层,小明的主机通过网卡接收到高低电平的二进制信号,通过信号解析,还原成 0/1 这样的二进制序列。


接着物理层调用数据链路层,使用以太网协议,将上述 0/1 二进制数据还原成以太网帧,然后把帧头、帧尾去掉,取出以太网数据包的载荷,向上提交给网络层(以太网中有一个字段标志着网络层协议类型)。


网络层拿到载荷后,根据载荷协议类型,这里是 IP 数据包进行解析,然后去掉 IP 报头,取出载荷向上提交给传输层(IP 数据包中有一个字段标志着传输层协议类型)。


传输层拿到载荷,根据载荷协议类型,这里是 UDP 数据包进行解析,去掉 UDP 报头,取出载荷,根据端口号上交给应用层。


应用层中的微信应用程序拿到载荷后,根据相应的应用层程序对载荷内容进行解析,取出相应的字段显示到前端页面。

(2)真实网络环境中的封装分用

相关文章
|
5月前
|
C++
基于Reactor模型的高性能网络库之地址篇
这段代码定义了一个 InetAddress 类,是 C++ 网络编程中用于封装 IPv4 地址和端口的常见做法。该类的主要作用是方便地表示和操作一个网络地址(IP + 端口)
300 58
|
5月前
|
网络协议 算法 Java
基于Reactor模型的高性能网络库之Tcpserver组件-上层调度器
TcpServer 是一个用于管理 TCP 连接的类,包含成员变量如事件循环(EventLoop)、连接池(ConnectionMap)和回调函数等。其主要功能包括监听新连接、设置线程池、启动服务器及处理连接事件。通过 Acceptor 接收新连接,并使用轮询算法将连接分配给子事件循环(subloop)进行读写操作。调用链从 start() 开始,经由线程池启动和 Acceptor 监听,最终由 TcpConnection 管理具体连接的事件处理。
199 2
|
5月前
基于Reactor模型的高性能网络库之Tcpconnection组件
TcpConnection 由 subLoop 管理 connfd,负责处理具体连接。它封装了连接套接字,通过 Channel 监听可读、可写、关闭、错误等
169 1
|
5月前
|
JSON 监控 网络协议
干货分享“对接的 API 总是不稳定,网络分层模型” 看电商 API 故障的本质
本文从 OSI 七层网络模型出发,深入剖析电商 API 不稳定的根本原因,涵盖物理层到应用层的典型故障与解决方案,结合阿里、京东等大厂架构,详解如何构建高稳定性的电商 API 通信体系。
|
7月前
|
域名解析 网络协议 安全
计算机网络TCP/IP四层模型
本文介绍了TCP/IP模型的四层结构及其与OSI模型的对比。网络接口层负责物理网络接口,处理MAC地址和帧传输;网络层管理IP地址和路由选择,确保数据包准确送达;传输层提供端到端通信,支持可靠(TCP)或不可靠(UDP)传输;应用层直接面向用户,提供如HTTP、FTP等服务。此外,还详细描述了数据封装与解封装过程,以及两模型在层次划分上的差异。
1279 13
|
7月前
|
网络协议 中间件 网络安全
计算机网络OSI七层模型
OSI模型分为七层,各层功能明确:物理层传输比特流,数据链路层负责帧传输,网络层处理数据包路由,传输层确保端到端可靠传输,会话层管理会话,表示层负责数据格式转换与加密,应用层提供网络服务。数据在传输中经过封装与解封装过程。OSI模型优点包括标准化、模块化和互操作性,但也存在复杂性高、效率较低及实用性不足的问题,在实际中TCP/IP模型更常用。
966 10
|
2月前
|
机器学习/深度学习 数据采集 人工智能
深度学习实战指南:从神经网络基础到模型优化的完整攻略
🌟 蒋星熠Jaxonic,AI探索者。深耕深度学习,从神经网络到Transformer,用代码践行智能革命。分享实战经验,助你构建CV、NLP模型,共赴二进制星辰大海。
|
3月前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
222 2
|
3月前
|
机器学习/深度学习 并行计算 算法
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
|
5月前
基于Reactor模型的高性能网络库之Poller(EpollPoller)组件
封装底层 I/O 多路复用机制(如 epoll)的抽象类 Poller,提供统一接口支持多种实现。Poller 是一个抽象基类,定义了 Channel 管理、事件收集等核心功能,并与 EventLoop 绑定。其子类 EPollPoller 实现了基于 epoll 的具体操作,包括事件等待、Channel 更新和删除等。通过工厂方法可创建默认的 Poller 实例,实现多态调用。
305 60

热门文章

最新文章