首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【javaEE】学完计算机网络,别一问只知道IP和端口!

【javaEE】学完计算机网络,别一问只知道IP和端口!

作者头像
那我掉的头发算什么
发布2026-01-12 19:47:04
发布2026-01-12 19:47:04
670
举报
这里是@那我掉的头发算什么 刷到我,你的博客算是养成了😁😁😁

网络互连

在一开始,计算机是独立工作的,每台计算机负责不同的业务:

随着时代的发展,越来越需要计算机之间互相通信,共享软件和数据,即以多个计算机协同⼯作来完成业务,就有了⽹络互连。 ⽹络互连:将多台计算机连接在⼀起,完成数据共享。 数据共享本质是⽹络数据传输,即计算机之间通过⽹络来传输数据,也称为⽹络通信。 根据⽹络互连的规模不同,可以划分为局域⽹和⼴域⽹。

局域网LAN

局域⽹,即 Local Area Network,简称LAN。 Local 即标识了局域⽹是本地,局部组建的⼀种私有⽹络。 局域⽹内的主机之间能⽅便的进⾏⽹络通信,⼜称为内⽹;局域⽹和局域⽹之间在没有连接的情况下,是⽆法通信的。 局域⽹组建⽹络的⽅式有很多种: 1.基于网线直连

在这里插入图片描述
在这里插入图片描述

2.基于集线器组建

在这里插入图片描述
在这里插入图片描述

3.基于交换机组建

在这里插入图片描述
在这里插入图片描述

4.基于交换机和路由器组建

在这里插入图片描述
在这里插入图片描述

⼴域网WAN

⼴域⽹,即 Wide Area Network,简称WAN。 通过路由器,将多个局域⽹连接起来,在物理上组成很⼤范围的⽹络,就形成了⼴域⽹。⼴域⽹内部的局域⽹都属于其⼦⽹。

在这里插入图片描述
在这里插入图片描述

如果有北、中、南等分公司,甚⾄海外分公司,把这些分公司以专线⽅式连接起来,即称为“⼴域⽹”。 如果属于全球化的公共型⼴域⽹,则称为互联⽹(⼜称公⽹,外⽹),属于⼴域⽹的⼀个⼦集。 有时在不严格的环境下说的⼴域⽹,其实是指互联⽹。 所谓 “局域⽹” 和 “⼴域⽹” 只是⼀个相对的概念。⽐如,我们有 “天朝特⾊” 的⼴域⽹,也可以看做⼀个⽐较⼤的局域⽹(憋说昂)

网络通信基础

⽹络互连的⽬的是进⾏⽹络通信,也即是⽹络数据传输,更具体⼀点,是⽹络主机中的不同进程间,基于⽹络传输数据。 那么,在组建的⽹络中,如何判断到底是从哪台主机,将数据传输到那台主机呢?这就需要使⽤IP地址来标识。

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地址⽤于标识主机⽹络地址,端⼝号可以标识主机中发送数据、接收数据的进程。 简单说:端⼝号⽤于定位主机中的进程。 类似发送快递时,不光需要指定收货地址(IP地址),还需要指定收货⼈(端⼝号)。 格式 端⼝号是0~65535范围的数字,在⽹络通信中,进程可以通过绑定⼀个端⼝号,来发送及接收⽹络数据。

问题: 有了IP地址和端⼝号,可以定位到⽹络中唯⼀的⼀个进程,但还存在⼀个问题,⽹络通信是基于⼆进制0/1数据来传输,如何告诉对⽅发送的数据是什么样的呢? ⽹络通信传输的数据类型可能有多种:图⽚,视频,⽂本等。同⼀个类型的数据,格式可能也不同, 如发送⼀个⽂本字符串“你好!”:如何标识发送的数据是⽂本类型,及⽂本的编码格式呢? 基于⽹络数据传输,需要使⽤协议来规定双⽅的数据格式。

认识协议

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

作⽤ 为什么需要协议? 就好⽐⻅⽹友,彼此协商胸⼝插⽀玫瑰花⻅⾯,这就是⼀种提前的约定,也可以称之为协议

在这里插入图片描述
在这里插入图片描述

计算机之间的传输媒介是光信号和电信号。通过 “频率” 和 “强弱” 来表⽰ 0 和 1 这样的信息。要想传递各种不同的信息,就需要约定好双⽅的数据格式。 • 计算机⽣产⼚商有很多; • 计算机操作系统,也有很多; • 计算机⽹络硬件设备,还是有很多; 如何让这些不同⼚商之间⽣产的计算机能够相互顺畅的通信? 就需要有⼈站出来,约定⼀个共同的标准,⼤家都来遵守,这就是⽹络协议;

五元组

在TCP/IP协议中,⽤五元组来标识⼀个⽹络通信:

  1. 源IP:标识源主机
  2. 源端⼝号:标识源主机中该次通信发送数据的进程
  3. ⽬的IP:标识⽬的主机
  4. ⽬的端⼝号:标识⽬的主机中该次通信接收数据的进程
  5. 协议号:标识发送进程和接收进程双⽅约定的数据格式
在这里插入图片描述
在这里插入图片描述

五元组在⽹络通信中的作⽤,类似于发送快递:

在这里插入图片描述
在这里插入图片描述

协议分层

对于⽹络协议来说,往往分成⼏个层次进⾏定义。 什么是协议分层 协议分层类似于打电话时,定义不同的层次的协议:

在这里插入图片描述
在这里插入图片描述

在这个例⼦中,我们的协议只有两层;但是实际的⽹络通信会更加复杂,需要分更多的层次。

分层的作用

为什么需要⽹络协议的分层? 分层最⼤的好处,类似于⾯向接⼝编程:定义好两层间的接⼝规范,让双⽅遵循这个规范来对接。 封装:在代码中,类似于定义好⼀个接⼝,⼀⽅为接⼝的实现类(提供⽅,提供服务),⼀⽅为接⼝的使⽤类(使⽤⽅,使⽤服务): • 对于使⽤⽅来说,并不关⼼提供⽅是如何实现的,只需要使⽤接⼝即可 • 对于提供⽅来说,利⽤封装的特性,隐藏了实现的细节,只需要开放接⼝即可。

解耦:分层之后,灵活的替换其中的某一层,对整体的影响都较小。

OSI七层模型

OSI:即Open System Interconnection,开放系统互连 • OSI 七层⽹络模型是⼀个逻辑上的定义和规范:把⽹络从逻辑上分为了7层。 • OSI 七层模型是⼀种框架性的设计⽅法,其最主要的功能使就是帮助不同类型的主机实现数据传输; OSI 七层模型划分为以下七层:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

OSI 七层模型既复杂⼜不实⽤:所以 OSI 七层模型没有落地、实现。 实际组建⽹络时,只是以 OSI 七层模型设计中的部分分层,也即是以下 TCP/IP 五层(或四层)模型来实现。

TCP/IP五层(或四层)模型

TCP/IP是⼀组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。 TCP/IP通讯协议采⽤了5层的层级结构,每⼀层都呼叫它的下⼀层所提供的⽹络来完成⾃⼰的需求。

• 应⽤层:负责应⽤程序间沟通,如简单电⼦邮件传输(SMTP)、⽂件传输协议(FTP)、⽹络远程访问协议(Telnet)等。我们的⽹络编程主要就是针对应⽤层。 • 传输层:负责两台主机之间的数据传输。如传输控制协议 (TCP),能够确保数据可靠的从源主机发送到⽬标主机。 • ⽹络层:负责地址管理和路由选择。例如在IP协议中,通过IP地址来标识⼀台主机,并通过路由表的⽅式规划出两台主机之间的数据传输的线路(路由)。路由器(Router)⼯作在⽹路层。 • 数据链路层:负责设备之间的数据帧的传送和识别。例如⽹卡设备的驱动、帧同步(就是说从⽹线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就⾃动重发)、数据差错校验等⼯作。有以太⽹、令牌环⽹,⽆线LAN等标准。交换机(Switch)⼯作在数据链路层。 • 物理层:负责光/电信号的传递⽅式。⽐如现在以太⽹通⽤的⽹线(双绞 线)、早期以太⽹采⽤的的同轴电缆(现在主要⽤于有线电视)、光纤,现在的wifi⽆线⽹使⽤电磁波等都属于物理层的概念。物理层的能⼒决定了最⼤传输速率、传输距离、抗⼲扰性等。集线器(Hub)⼯作在物理层。

在这里插入图片描述
在这里插入图片描述

物理层我们考虑的⽐较少。因此很多时候也可以称为 TCP/IP四层模型。

数据链路层、传输层、网络层的区别☆

先看数据链路层,它是整个传输的 “短途接送员”,只负责 “当前链路” 的相邻节点通信,比如你家电脑到路由器、路由器到隔壁路由器的这段 “近距离传输”。它不管数据要去哪里、最终要交给哪台主机,只关心怎么把数据安全送到 “下一站”。为了实现这点,它用 MAC 地址(也就是网卡的物理地址)来识别相邻节点 —— 就像快递在同一个小区里,用 “楼栋号 + 单元号” 找下一个接送点,而且每换一段链路,这个 “接送地址”(MAC 地址)就会更新,比如从你家电脑到小区路由器,目标 MAC 是路由器的 LAN 口地址;从小区路由器到运营商路由器,目标 MAC 又变成运营商路由器的端口地址。它的核心任务是 “封装成帧” 和 “差错检测”,把网络层传来的数据包加上首尾标识,再用 CRC 校验确保数据没传错,相当于给短途运输的包裹做个简单安检,确保中途没破损。

再往上是网络层,它是 “跨网导航员”,负责解决 “跨网络找主机” 的问题。比如你在上海的电脑要访问北京服务器的网站,数据链路层只能管上海家里到小区路由器的短途,但从上海到北京要经过无数个网络、无数台路由器,这就需要网络层来规划路线。它用 IP 地址(比如 IPv4 的 32 位地址)来定位 “全局目标”—— 就像快递的 “收件人完整地址”,不管中途经过多少中转站,这个地址始终不变。路由器就是网络层的核心设备,它拿着 IP 地址查路由表,确定数据该往哪个路由器转发,相当于快递中转站的分拣员,根据收件地址判断下一个中转站该送哪里。网络层不管数据在具体链路怎么传(那是数据链路层的活),也不管数据最终要交给哪个程序(那是传输层的活),只专注于 “从源主机所在的网络,精准导航到目标主机所在的网络”,还会处理数据包分片 —— 如果数据包太大,超过当前链路的传输上限(MTU),就拆成小块,到目标主机后再重组。

最后是传输层,它是 “主机内的收件员”,负责在数据到达目标主机后,把数据精准交给对应的应用程序。比如你打开浏览器访问网页,数据要交给浏览器;用微信发消息,数据要交给微信客户端,这就是传输层的职责。它用端口号来区分不同程序 —— 比如 HTTP 服务用 80 端口、DNS 查询用 53 端口,就像快递到了小区门口,用 “门牌号” 找具体的收件人。它的核心任务不只是 “寻址”,更要保障 “端到端的通信质量”:如果是 TCP 协议,就会提供可靠传输,比如数据丢了就重传、发送方别发太快以免接收方接不过来(流量控制)、网络拥堵时就放慢速度(拥塞控制),相当于给重要快递做 “保价 + 定时送达”;如果是 UDP 协议,就追求快速轻便,不做额外保障,适合视频通话、游戏这种对延迟敏感的场景,相当于普通快递,只求快速送达,不管中途是否轻微破损。而且它必须依赖网络层 —— 只有网络层把数据送到目标主机,传输层才能通过端口号找到对应的程序,两者是 “先到主机,再找程序” 的依赖关系。

总结下来,三者的分工其实很清晰:数据链路层管 “同链路、相邻节点、短途可靠传”,用 MAC 地址定位,每跳地址可变;网络层管 “跨网络、目标主机、全局导航”,用 IP 地址定位,全程地址不变;传输层管 “主机内、应用程序、端到端质量”,用端口号定位,依赖网络层找到主机。从数据出发到到达目标程序,就是 “数据链路层短途接送→网络层跨网导航→传输层精准交程序” 的接力过程,三层各司其职,才让我们在电脑上点一下鼠标,就能收到千里之外的网络数据。

网络设备所在分层

• 对于⼀台主机,它的操作系统内核实现了从应用层到物理层的内容; • 对于⼀台路由器,它实现了从⽹络层到物理层,也即是TCP/IP五层模型的下三层; • 对于⼀台交换机,它实现了从数据链路层到物理层,也即是TCP/IP五层模型的下两层;

注意我们这⾥说的是传统意义上的交换机和路由器,也称为⼆层交换机(⼯作在TCP/IP五层模型的下两层)、三层路由器(⼯作在TCP/IP五层模型的下三层)。 随着现在⽹络设备技术的不断发展,也出现了很多3层或4层交换机,4层路由器。我们以下说的⽹络设备都是传统意义上的交换机和路由器。

网络数据通信基本流程–封装与分用

日常生活中,我们使用QQ发送一句hello给对方,此时对方电脑上QQ图标会闪烁,显示收到了我发送的消息。这看似极其简单的一个操作,在网络上其实经历了很复杂很复杂的一个过程~~~~~~ 1.应用程序获取到用户输入,构造一个应用层的数据包 这个应用层数据包往往是结构化数据 – 类似于c的结构体,有很多的属性。 发送数据的时候,把结构化数据-》字符串/二进制比特流,接收数据的时候将字符串/二进制比特流-》结构化数据,称为序列化反序列化。序列化之后数据就可以传输了(比如bit流的话就可以0101通过电信号、光信号等传输)。

这个应用层数据包会遵守应用层协议,这个协议往往是开发这个程序的程序员定的。此处假设这样的协议格式为: 发送者的QQ号,接收者的QQ号,消息时间,消息正文:

在这里插入图片描述
在这里插入图片描述

本质上可以说是字符串的拼接。

2.应用程序调用传输层提供的API,把数据交给传输层 传输层拿到数据后,构造出“传输层数据包” 传输层的协议主要有两个: TCP UDP 拿TCP举例,TCP数据包包含TCP报头(header) + TCP载荷 载荷其实就是应用层数据包,TCP报头包含TCP功能相关的属性,里面包含了源端口和目的端口。

在这里插入图片描述
在这里插入图片描述

3.传输层构造好数据之后,继续调用网络层的API,将传输层的数据包交给网络层 网络层最主要的协议,IP协议 IP协议继续对上述数据包进行加工=》拼上IP报头 IP数据包 = IP报头 + IP载荷 载荷依旧是传输层的数据包 IP报头也包含了IP相关的很多属性,主要记住包含了源IP和目标IP。

在这里插入图片描述
在这里插入图片描述

4.IP协议调用数据链路层的API,把IP数据包交给数据链路层 数据链路层中的核心协议:“以太网” 以太网也会在网络层数据包的基础上进一步加工

在这里插入图片描述
在这里插入图片描述

其实不同的数据包都有着自己独有的称呼,并不是都叫“包” 网络数据包/帧/报/段 TCP用段(segment) UDP用报 (datagram) IP用包 (packet) 数据链路层用帧 (frame)

所以图中我写的是以太网数据帧 一般来说可以混着用都叫做包

到目前为止,数据还在主机上,还没有被传播出去。

5.以太网将这样的数据交给硬件设备(网卡) 网卡会把上述二进制数据,最终以光信号/电信号/电磁波信号传播出去,此时数据终于脱离了主机,踏上了传播之路。

整个过程中,从上层到下层,数据一步步被加工(装报头),而到了接收的时候,就与封装完全相反,慢慢的把报头取下来。

数据到达接收方的主机后,会被层层解析 1.数据到达接收方的网卡,将光电信号还原成二进制信息 将二进制信息交给数据链路层

2.数据链路层根据以太网协议进行解析,将报头和报尾取出来,剩下的载荷网上传递给网络层。 以太网的帧头中有专门的属性描述了网络层使用哪个协议,传递的时候也会把这个信息传递过去。

3.网络层拿到这个数据之后,按照IP协议的格式解析,再把载荷传递给传输层。 同样的,IP报头中也有专门的属性描述传输层使用哪个协议。

4.传输层拿到数据之后,也根据TCP协议解析,取出载荷交给应用层 传输层报头中通过目的端口号告知我们数据交给哪个应用程序

5.到了QQ,解析应用层数据,拿到关键信息,显示出来

在传输过程中,也涉及到封装分用的知识:

主机的数据 =》交换机,交换机收到后,物理层进行解析,数据链路层也进行解析,之后重新构造出以太网数据帧,发给下一个设备。 数据链路层中得到的以太网数据帧的帧头,足以支持交换机进行下一步的工作,并且每次实现两个相邻的设备的传输,都要打一个新的包。 —》交换机是工作在数据链路层

主机的数据 =》路由器,路由器收到后,物理层数据链路层网络层进行解析,重新构造出新的网络数据包,以太网数据帧以及二进制数据进行转发。 —》路由器工作在网络层

总结

网络通信的本质,是一场跨越物理边界的 “数据接力赛”—— 从孤立主机到局域网互连,再到广域网与互联网的打通,核心是通过 “分层协议” 和 “精准定位”,让数据从一个主机的应用程序,顺畅抵达另一个主机的目标程序。 整篇文章从基础到深层,逐步拆解了这场 “接力赛” 的核心逻辑:先明确网络互连的两种形态(局域网的本地私有通信、广域网的跨域互联),再铺垫通信的核心要素 ——IP 地址定位主机、端口号定位进程、协议规范数据格式,而五元组则完整标识了一次独一无二的通信链路。在此基础上,协议分层(尤其是 TCP/IP 五层模型)成为了高效协作的关键:物理层负责信号传输,数据链路层、网络层、传输层各司其职完成 “短途接送→跨网导航→主机内投递” 的核心接力,应用层则对接具体业务场景。 其中,数据链路层、网络层、传输层的分工是核心:数据链路层管 “相邻节点的短途可靠传输”,用 MAC 地址动态适配每一段链路;网络层管 “跨网络的全局导航”,用不变的 IP 地址锁定目标主机;传输层管 “端到端的程序交付与质量保障”,用端口号精准匹配应用,TCP 与 UDP 分别适配不同可靠性需求。而数据的 “封装与分用” 则是贯穿全程的操作 —— 发送端从上层到下层层层加包头,接收端则反向层层解包,中间设备(交换机、路由器)按自身分层职责完成转发,最终实现 “数据从应用中来,到应用中去”。 说到底,复杂的网络通信背后,是 “分层解耦” 和 “标准化协议” 的智慧:每一层只专注自己的核心任务,每一个协议都明确统一的规则,不同设备、不同系统只要遵守这套规范,就能无缝协作,这也是我们能轻松刷网页、发消息、跨地域通信的底层保障。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2026-01-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 这里是@那我掉的头发算什么 刷到我,你的博客算是养成了😁😁😁
  • 网络互连
  • 局域网LAN
  • ⼴域网WAN
  • 网络通信基础
    • IP地址
    • 端口号
    • 认识协议
    • 五元组
  • 协议分层
    • 分层的作用
    • OSI七层模型
    • TCP/IP五层(或四层)模型
    • 数据链路层、传输层、网络层的区别☆
    • 网络设备所在分层
  • 网络数据通信基本流程–封装与分用
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档