初始网络通信
目录
一:网络发展史
1.1:⽹络互连
1.2:局域⽹LAN
1.3:⼴域⽹WAN
二:⽹络通信基础
2.1:IP地址
2.2:端口号
2.3:协议
2.4:协议分层
1:OSI七层模型
2:TCP/IP五层
2.5:封装和分⽤
1:封装
2:分用
一:网络发展史
独⽴模式
独⽴模式:计算机之间相互独⽴;
1.1:⽹络互连
随着时代的发展,越来越需要计算机之间互相通信,共享软件和数据,即以多个计算机协同⼯作来完成业务,就有了⽹络互连。
⽹络互连:将多台计算机连接在⼀起,完成数据共享。
数据共享本质是⽹络数据传输,即计算机之间通过⽹络来传输数据,也称为⽹络通信。
根据⽹络互连的规模不同,可以划分为局域⽹和⼴域⽹。
1.2:局域⽹LAN
局域⽹,即 Local Area Network,简称LAN。
Local 即标识了局域⽹是本地,局部组建的⼀种私有⽹络。
局域⽹内的主机之间能⽅便的进⾏⽹络通信,⼜称为内⽹;局域⽹和局域⽹之间在没有连接的情况下,是⽆法通信的。
局域⽹组建⽹络的⽅式有很多种:
(1)基于⽹线直连
(2)基于集线器组建
(3)基于交换机组建
(4)基于交换机和路由器组建(重点关注)
局域网:就是一片区域,就好比网吧打游戏,只能这个网吧的人在一起打游戏。
1.3:⼴域⽹WAN
⼴域⽹,即 Wide Area Network,简称WAN。
通过路由器,将多个局域⽹连接起来,在物理上组成很⼤范围的⽹络,就形成了⼴域⽹。⼴域⽹内部的局域⽹都属于其⼦⽹。
路由器把更多的局域网链接起来
网游就是代表,整个中国乃至世界的人都可以一起玩游戏
二:⽹络通信基础
⽹络互连的⽬的是进⾏⽹络通信,也即是⽹络数据传输,更具体⼀点,是⽹络主机中的不同进程间,基于⽹络传输数据。
那么,在组建的⽹络中,如何判断到底是从哪台主机,将数据传输到那台主机呢?这就需要使⽤IP地址来标识。
2.1: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地址
2.2:端口号
概念
在⽹络通信中,IP地址⽤于标识主机⽹络地址,端⼝号可以标识主机中发送数据、接收数据的进程。
简单说:端⼝号⽤于定位主机中的进程。
类似发送快递时,不光需要指定收货地址(IP地址),还需要指定收货⼈(端⼝号)。
想起来我们mysql中使用jdbc链接数据库 有一个这样的表示 jdbc:mysql://127.0.0.1:3306
这个3306就是端口号
用来区分设备上不同的应用程序
格式
整数(16位的整数,无符号)
端⼝号是0~65535范围的数字,在⽹络通信中,进程可以通过绑定⼀个端⼝号,来发送及接收⽹络数据
问题:
有了IP地址和端⼝号,可以定位到⽹络中唯⼀的⼀个进程,但还存在⼀个问题,⽹络通信是基于⼆进制0/1数据来传输,如何告诉对⽅发送的数据是什么样的呢?
⽹络通信传输的数据类型可能有多种:图⽚,视频,⽂本等。同⼀个类型的数据,格式可能也不同,如发送⼀个⽂本字符串“你好!”:如何标识发送的数据是⽂本类型,及⽂本的编码格式呢?
基于⽹络数据传输,需要使⽤协议来规定双⽅的数据格式。
2.3:协议
通信双方对于数据传输格式的约定
网络的本质是传输“光信号”/“电信号”/“电磁波”
光信号:提供光纤 玻璃丝 激光 通过不同的频率 表示0/1
电信号:通过网线(高低电平)表示0/1
电磁波:wifi
约定协议:就是0101的数据格式(就是表示多少个1表示什么含义,多少个0表示什么含义)作⽤
为什么需要协议?
就好⽐⻅⽹友,彼此协商胸⼝插⽀玫瑰花⻅⾯,这就是⼀种提前的约定,也可以称之为协议。
计算机⽣产⼚商有很多;
计算机操作系统,也有很多;
计算机⽹络硬件设备,还是有很多;
如何让这些不同⼚商之间⽣产的计算机能够相互顺畅的通信?
就需要有⼈站出来,约定⼀个共同的标准,⼤家都来遵守,这就是 ⽹络协议;
2.4:五元组
在TCP/IP协议中,⽤五元组来标识⼀个⽹络通信:
1. 源IP:标识源主机2. 源端⼝号:标识源主机中该次通信发送数据的进程
3. ⽬的IP:标识⽬的主机
4. ⽬的端⼝号:标识⽬的主机中该次通信接收数据的进程
5. 协议号:标识发送进程和接收进程双⽅约定的数据格式
举个例子理解
收件人地址(目的ip) 收件人(目的端口号)
发件人地址(源ip) 发件人(源端口号)
走顺丰/圆通/申通(协议)
2.4:协议分层
由于网络通信本身就是一个非常非常复杂的话题,解决复杂的问题就要有复杂的方案
一个协议就会非常非常非常复杂,所以我们就要把协议拆分,但是拆分后意味着数目就会变多,那就需要分层,约定协议和协议之间的调用关系。协议分层类似于打电话时,定义不同的层次的协议
这就是协议分层,电话一个协议,使用什么语言也是一个协议,
分层的作⽤
为什么需要⽹络协议的分层?
分层最⼤的好处,类似于⾯向接⼝编程:定义好两层间的接⼝规范,让双⽅遵循这个规范来对接。
在代码中,类似于定义好⼀个接⼝,⼀⽅为接⼝的实现类(提供⽅,提供服务),⼀⽅为接⼝的使⽤类(使⽤⽅,使⽤服务):
•
对于使⽤⽅来说,并不关⼼提供⽅是如何实现的,只需要使⽤接⼝即可
•
对于提供⽅来说,利⽤封装的特性,隐藏了实现的细节,只需要开放接⼝即可。让我们看看真实的网络分层结构
1:OSI七层模型
OSI:即Open System Interconnection,开放系统互连
OSI 七层⽹络模型是⼀个逻辑上的定义和规范:把⽹络从逻辑上分为了7层。
OSI 七层模型是⼀种框架性的设计⽅法,其最主要的功能使就是帮助不同类型的主机实现数据传输;
OSI 七层模型既复杂⼜不实⽤:所以 OSI 七层模型没有落地、实现。
实际组建⽹络时,只是以 OSI 七层模型设计中的部分分层,也即是以下 TCP/IP 五层(或四层)模型来实现
2:TCP/IP五层
TCP/IP五层(或四层)模型
TCP/IP是⼀组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。
TCP/IP通讯协议采⽤了5层的层级结构,每⼀层都呼叫它的下⼀层所提供的⽹络来完成⾃⼰的需求。应⽤层:负责应⽤程序间沟通,如简单电⼦邮件传输(SMTP)、⽂件传输协议(FTP)、⽹络远程访问协议(Telnet)等。我们的⽹络编程主要就是针对应⽤层(就是程序员自己说的算,数据如何使用什么的)。
•
传输层:不关心中间的传输过程,只关心传输的起点和终点。
•
⽹络层:负责任意两个节点的之间的路径规划
•
数据链路层:负责两个相邻节之间的通信,(通过网线光纤直连的两个设备)
•
物理层:负责光/电信号的传递⽅式。⽐如现在以太⽹通⽤的⽹线(双绞 线)、早期以太⽹采⽤的的同轴电缆(现在主要⽤于有线电视)、光纤,现在的wifi⽆线⽹使⽤电磁波等都属于物理层的概念。物理层的能⼒决定了最⼤传输速率、传输距离、抗⼲扰性等。集线器(Hub)⼯作在物理层。概念可能太片面了,接下来我举一个例子来表示这个模型
首先还是快递事件,我在淘宝买一件衣服,我需要填写收件地址收件人收件电话,卖家需要填发货人发货地址电话,我和卖家就是传输层,不需要关系快递的中间路线,只关心发给谁,从那发货。这就是传输层
卖家把快递给快递公司,快递公司就需要规划路线,比如发件地址上海,收件地址西安,那么路线就这样规划上海-南京-无锡-西安,这就是网络层负责上海-西安的路径规划
路线规划好,那么我们就要实施
上海-南京(水运货船)
南京-无锡(空运飞机)
无锡-西安(陆运火车)
西安-我(电三轮)
每个环节都是快递小哥进行具体实施,只关心他负责的这一段,不在乎快递去哪里,从哪里来的这就是数据链路层
然后我们这一路利用的河道、航线、轨道、马路这就是物理层。那么拿到衣服,我是自己穿,还是送人,还是摆着看?没有人知道
这就是应用层
⽹络设备所在分层
对于⼀台主机,它的操作系统内核实现了从传输层到物理层的内容,也即是TCP/IP五层模型的下四层;
•
对于⼀台路由器,它实现了从⽹络层到物理层,也即是TCP/IP五层模型的下三层;
•
对于⼀台交换机,它实现了从数据链路层到物理层,也即是TCP/IP五层模型的下两层;
不规划,只关心相邻节点
•
对于集线器,它只实现了物理层;路由器和交换机可能出先面试题
2.5:封装和分⽤
1:封装
1.应用层
用户输入hello,点击发送按钮,qq应用程序能获取到hello字符串,把这个hello构造成“应用层数据包”这个应用层数据包时按照应用层协议来构造
假设按照下列格式:
发送者的用户id,接收者的用户id,信息的发送时间,信息的正文;
1234 5678 2025年10-28 11:18 hello 这个就是拼接字符串
通过操作系统的api,把这个数据包交给下一层传输层
2.传输层(系统内核里面)
拿到数据后,传输层要按照传输层的协议 再来构造一个数据包
传输层涉及到的协议,主要就是TCP和UDP,此处以UDP为例
UDP数据包,包含报头+载荷(应用层数据包)
拼接UDP报头,就类似快递小哥,包装快递,并且贴标签(填写一个收件人地址什么的)
传输层把构造好的传输层的数据包,调用对应的api,交给网络层这点提醒一下:网络协议分层之后,一定是上层调用下层,下层给上层提供服务,不能乱调用,或者跨层调用。不能越级
3.网络层
网络层最主要就是ip协议
ip协议也会在传输层数据包,基础上添加ip报头
把这个ip数据包,进一步的往下传输给数据链路层。
4.数据链路层
数据链路层最主要的的协议“以太网”(插网线/光纤通信的网络)wifi的协议是802.11
在以太网协议,在ip数据报的基础上,拼接上信息
把上述数据再交给物理层
5.物理层
把上述0101这样都数据,转换成光信号/电信号/电磁波,通过介质传输出去
以上这个过程就是封装,把这个hello套上辅助信息,一套一套。封装是发送发的操作流程
2:分用
是接收方的流程
1.物理层收到光电信号
把光电信号转换成0101数字信号,交给数据链路层
2.数据链路层
就会拿到这样数据包,然后以太网协议就会进行解析
去掉帧头帧尾,进一步交给网络层
3.网络层
到达网络层,然后ip协议,就再进一步解析也会取出载荷,进一步交给传输层
4.传输层
到达传输层,UDP协议再进一步解析数据包,取出载荷,传给应用层
5.应用层
最后qq的应用层协议再进行解析,把这里的信息提取出来,显示到界面上。
了解封装和分用,可以这样理解,封装就是装快递,分用就是拆快递。
关于协议类型,每一层都可以知道上一次使用的什么协议
还有一些小知识点:
报/包/帧/段时网络传输数据的基本单位
段:TCP
报:UDP
包:ip
帧:数据链路层



















