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

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: 网络通信基础(网络通信基本概念+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)真实网络环境中的封装分用

相关文章
|
11天前
|
网络协议 数据安全/隐私保护 网络架构
|
2天前
|
网络协议 安全 Go
Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
【10月更文挑战第28天】Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
23 13
|
3天前
|
网络协议 算法 网络性能优化
计算机网络常见面试题(一):TCP/IP五层模型、TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议
计算机网络常见面试题(一):TCP/IP五层模型、应用层常见的协议、TCP与UDP的区别,TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议、ARP协议
|
8天前
|
机器学习/深度学习 人工智能 算法
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
车辆车型识别,使用Python作为主要编程语言,通过收集多种车辆车型图像数据集,然后基于TensorFlow搭建卷积网络算法模型,并对数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django搭建web网页端操作界面,实现用户上传一张车辆图片识别其类型。
23 0
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
|
17天前
|
机器学习/深度学习 算法 数据挖掘
【深度学习】经典的深度学习模型-02 ImageNet夺冠之作: 神经网络AlexNet
【深度学习】经典的深度学习模型-02 ImageNet夺冠之作: 神经网络AlexNet
24 2
|
1天前
|
存储 安全 算法
网络安全与信息安全:漏洞、加密技术及安全意识的重要性
如今的网络环境中,网络安全威胁日益严峻,面对此类问题,除了提升相关硬件的安全性、树立法律法规及行业准则,增强网民的网络安全意识的重要性也逐渐凸显。本文梳理了2000年以来有关网络安全意识的研究,综述范围为中国知网中篇名为“网络安全意识”的期刊、硕博论文、会议论文、报纸。网络安全意识的内涵是在“网络安全”“网络安全风险”等相关概念的发展中逐渐明确并丰富起来的,但到目前为止并未出现清晰的概念界定。此领域内的实证研究主要针对网络安全意识现状与问题,其研究对象主要是青少年。网络安全意识教育方面,很多学者总结了国外的成熟经验,但在具体运用上仍缺乏考虑我国的实际状况。 内容目录: 1 网络安全意识的相关
|
2天前
|
SQL 安全 算法
网络安全与信息安全:漏洞、加密技术与安全意识的交织
【10月更文挑战第28天】在数字时代的浪潮中,网络安全与信息安全成为保护个人隐私和企业资产的重要盾牌。本文将深入探讨网络安全中的常见漏洞,介绍加密技术的基本概念及其在保护数据中的应用,并强调提高安全意识的重要性。通过分析具体案例和提供实用的防护措施,旨在为读者提供一个全面的网络安全知识框架,以应对日益复杂的网络威胁。
17 4
|
1天前
|
存储 安全 网络安全
云计算与网络安全:探索云服务中的信息安全技术
【10月更文挑战第29天】在数字化时代的浪潮中,云计算作为一种革命性的技术,正日益成为企业和个人数据存储与处理的首选方案。然而,随之而来的网络安全问题也愈发复杂和严峻。本文将深入探讨云计算服务中的网络安全挑战,并分析如何通过先进的信息安全技术来加强保护措施。我们将从云服务的基础知识出发,逐步深入到网络安全的各个方面,包括数据加密、身份验证、访问控制等关键技术的应用。通过理论与实践的结合,旨在为读者提供一套全面而实用的云计算安全指南。
|
2天前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【10月更文挑战第28天】在数字化时代,网络安全和信息安全已经成为了我们生活中不可或缺的一部分。然而,随着技术的发展,网络安全漏洞也越来越多,加密技术和安全意识的重要性也越来越被人们所认识。本文将分享一些关于网络安全漏洞、加密技术和安全意识的知识,帮助读者更好地保护自己的网络信息安全。
|
5天前
|
SQL 存储 安全
网络安全与信息安全:防范漏洞、加密技术及安全意识
随着互联网的快速发展,网络安全和信息安全问题日益凸显。本文将探讨网络安全漏洞的类型及其影响、加密技术的应用以及提高个人和组织的安全意识的重要性。通过深入了解这些关键要素,我们可以更好地保护自己的数字资产免受网络攻击的威胁。