对于刚接触计算机网络的小白,网络原理中有许多平常知道却又不了解的术语,比如我们经常听到IP地址,端口号,网络协议...:flushed:,本篇博客喜欢喝雪碧的阿埋就和大家一起梳理一下这些常见的计算机网络术语吧~:satisfied:
1️⃣IP地址
概念
IP地址(Internet Protocol Address)是指互联网协议地址,又译为网际协议地址。IP地址是IP协议提供的一种统一的地址格式,为互联网上每一个网络和每一台主机提供一个逻辑地址,以此来屏蔽物理地址的差异。
简单来说,IP地址就像我们平时网购时填写的收件人地址,以此可以表示我们的位置。当有快递发来时快递员可以凭借这个地址准确送到我们的位置:mailbox_with_mail:
格式
IP协议有两个版本,分为IPv4和IPv6。
IPv4
IPv4协议是一个 32 位二进制数,通常被分割为4个"8位二进数表示"(即四个字节),即用"点分十进制"的方式表示为(a,b,c,d)的形式,其中a,b,c,d都是0~255之间的数字( 1 个字节表示的数字范围),如IP地址:01100100.00000100.00000101.00000110,用"点分十进制"的方式则表示为:100.4.5.6。IPv4的数量为 2^32^,约为43亿,而TCP/IP协议规定每个主机都需要一个IP地址,所以IPv4的数量不足以应对全世界的计算机,但目前IPv4使用仍较为广泛,一方面因为使用IPv6需要升级硬件设备,另一方面使用了其它技术来弥补IPv4数量不足的问题(如动态分配IP和NAT机制),关于IPv4的详细介绍,请移步本埋之后的博客:ram:。
IPv6
IPv6使用128位二进制数表示,数量为 2^128^,文本格式为 xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx,其中每个x是一个十六进制数字,代表4位二进制数。据说IPv6能给世界上每一粒沙子都分配一个地址哦~目前IPv6在我国已经得到了较高程度的普及:baby_chick:。
2️⃣端口号
概念
端口号用于定位主机中的进程。在网络通信中,IP地址用来标识主机网络地址,而端口号则用来标识发送数据、接收数据的进程。
举个栗子~,比如收快递时,收件人填写的地址是浙江省杭州市钱塘区桃花河小区:house:,此时快递会放到小区的菜鸟驿站,而菜鸟驿站如何将快递准确定位到每个收件人呢,就需要通过收件人的手机号:phone:来进行链接,经由发送短信或者打电话的方式联系到收件人。这里的浙江省杭州市钱塘区桃花河小区就相当于IP地址,而手机号就相当于端口号。端口号正是区分该主机下不同进程的标识。
格式
端口号是16位二进制数,所以端口号可以是 0 - 65535 之间的数字,在网络通信中,进程可以通过绑定一个端口号来接收及发送网络数据。
注意:一个进程可以绑定多个端口号,但不能多个进程绑定一个端口号。
这个要理解也不难,就像一个人可以同时绑定多个手机号,但不可以多个人都绑定同一个手机号呀:sweat_smile:。
3️⃣协议
概念
协议(Protocol),是网络协议的简称。协议是为计算机网络中进行数据交换而建立的规则、标准或约定的集合。
比如,网络传输的数据多种多样,有文本、图片、视频、音频等等。像是发送一句话:“吃饭啦”,如何标识发送的数据是文本类型以及文本的编码格式。所以基于网络数据传输,我们就需要协议来规定双方传输的数据格式。只有遵循这个协议,计算机之间才能通信交流。 网络协议由三个要素组成:
- 语法:即数据与控制信息的结构或格式以及数据出现的顺序。
这就像一个只会汉语的人和另一个只会汉语的人打电话,整个对话过程就特别顺利。如果一个只会汉语的人和一个只会英语的人打电话,那压根进行不下去的啦。
2. 语义:解释控制信息每个部分的意义。它规定了需要发出何种控制信息,以及完成的动作与做出什么样的响应。
语义就像是阿娇给阿强打电话:“吃饭了吗?”阿强就得回应:“吃啦”,或者,“还没呢”。如果阿强回应:“今天天气不错嗷”、“1+1=2啊”这种话,阿娇会觉得阿强不太正常:fearful:,两人完全不在同一频道。所以语义的作用,就是保证双方交流是在同一频道上的。
3. 时序:对事件发生顺序的详细说明。
时序要理解起来也并不困难,就相当于规定双方何时通信,先讲什么,后讲什么,讲的语速等。这体现在男生和女生进行电话沟通时,常常由男生率先发起通话,在男生恋恋不舍之时,由女生要求挂断电话~:persevere:
作用
各台计算机并不是完全相同的,常见的比如:
- 计算机生产厂商不同
- 计算机操作系统不同
- 计算机网络硬件设备不同
由于计算机之间的传输媒介是光信号和电信号,通过 "频率" 和 "强弱" 来表示 0 和 1 这样的信息。要想传递各种不同的信息,就需要约定好双方的数据格式。那么如何让这些不同厂商之间生产的计算机能够相互顺畅的通信? 就需要约定一个共同的标准,大家都来遵守。这个标准,就是网络协议。 协议就像是一种见面前的约定。举个栗子,比如一男一女相亲:couple:,两人事先只是在微信说好明天在酒吧见面。到了第二天,男方早早去了,看见一位女子:girl:像是在等人一般在酒吧里孤单地坐着,望向窗外。于是男子:boy:上前问道:“你是来相亲的吗?”女子迅速把视线打在男子身上,“是的,我是来相亲的。你就是?”男子神情释然,“没错,我就是来和你相亲的。”于是两人开始交流了起来,越谈越欢。结果谈着谈着,聊到介绍人的时候,两人感觉不对劲的起来。后来经过确认,相亲相错对象了:frowning:... 所以为了避免这种美丽的误会,就需要提前约定好。比如,相亲前一天约定,男子第二天胸前挂一朵玫瑰:rose:,女子第二天穿一件紫上衣。这样到了第二天,根据事先的约定来认人,就不怕相错对象啦~
知名协议的默认端口
系统端口号范围为 0 ~ 65535,其中:0 ~ 1023 为知名端口号,这些端口预留给服务端程序绑定广泛使用的应用层协议,如:
- 21 端口:预留给FTP服务器绑定FTP协议
- 22 端口:预留给SSH服务器绑定SSH协议
- 23 端口:预留给Telnet服务器绑定Telnet协议
- 80 端口:预留给HTTP服务器绑定HTTP协议
- 443 端口:预留给HTTPS服务器绑定HTTPS协议
需要注意的是,以上只是说明 0 - 1023 范围的知名端口号用于绑定知名协议,但某个服务器也可以使用知名端口号之外的,即 1024 - 65535 范围内的端口来绑定知名协议。 这就像餐厅的VIP包房仅对会员:moneybag:使用,但会员也可以选择不用包房,去坐普通座位。
4️⃣五元组
概念
在TCP/IP协议中,用五元组来标识一个网络通信。五元组通常指:
源IP地址:标识源主机 源端口号:标识源主机中该次通信发送数据的进程 目的IP地址:标识目的主机 目的端口号:标识目的主机中该次通信接收数据的进程 传输层协议:标识发送进程和接收进程双方约定的数据格式
五元组能够区分不同会话,并且对应的会话是唯一的。 还是举个栗子。这就像收发快递的过程,寄件人的地址就是源IP地址,寄件人的个人信息(如姓名、手机号等)就是源端口号,收件人的地址就是目的IP地址,收件人的个人信息就是目的端口号,选择韵达快递运送包裹就是传输层协议。
查看
查看本机的网络数据传输中的五元组信息,可以在cmd中输入:netstat -ano 如果需要过滤信息(通常以端口号或进程PID过滤),可以使用:netstat -ano | findstr 过滤字符串
5️⃣协议分层
概念
所谓的协议分层,就是根据互联网所需要的服务和功能,在体系结构上分成若干个层次,协议的服务和功能与哪一层的服务和功能相对应,该协议就属于哪一层。每层协议层通过在该层中执行某些动作或使用直接下层的服务来提供服务。协议分层具有概念化和结构化的特点。
协议分层可以用远程通话来类比。我们把远程通话的协议分为语言层和通信设备层。在语言层,双方可以约定都用汉语或者都用英语来进行沟通。在通信设备层,双方可以约定都用无线电对讲机来进行通信,或者都使用手机:iphone:通信。 通过这个栗子我们可以看出,在语言层,协议可以细分为汉语协议和英语协议;在通信设备层,协议可以细分为无线电对讲机协议和手机协议。
作用
由于因特网是一个非常复杂的系统,有大量的应用程序、协议以及各种端系统、链路、分组交换机等。这种复杂性,给我们开发使用互联网的协议提供了一定的困难。协议分层把因特网这个复杂的系统分成了若干个层次,使其模块化,从而方便大家对因特网的理解。而分层最大的好处,可以理解为面向接口编程:定义好两层间的接口规范,让双方遵循这个规范来对接。 从而更好地扩展和维护。
体现在代码中,只需要定义好接口,提供方只需要提供接口的实现类,使用方只需要使用接口即可。
- 对使用方而言,不需要关心接口的实现细节,只是使用接口就可以。
- 对提供方而言,通过封装的特性达到隐藏接口实现细节的效果,只要开放接口即可。
各层描述
| OSI七层模型 | TCP/IP五层模型 | 功能 | 举例 |
|---|---|---|---|
| 应用层 | 应用层 | 针对特定应用的协议。 | 简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。 |
| 表示层 | 设备固有数据格式和网络标准数据格式的转换。 | ||
| 会话层 | 通信管理。负责建立和断开通信连接(数据流动的逻辑思路)。管理传输层以下的分层。 | ||
| 传输层 | 传输层 | 管理两个节点之间的数据传输。负责可靠传输(确保数据被可靠地传送到目标地址)。 | 传输控制协议(TCP)等。 |
| 网络层 | 网络层 | 地址管理与路由选择。 | 在IP协议中,通过IP地址来标识一台主机,并通过路由表的方式规划出两台主机之间的数据传输的路线(路由)。路由器(Router)工作在网络层。 |
| 数据链路层 | 数据链路层 | 互联设备之间传送和识别数据帧。 | 网卡设备的驱动、帧同步(从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。有以太网、令牌环网、无限LAN等标准。交换机(Switch)工作在数据链路层。 |
| 物理层 | 物理层 | 以 “0”,“1”代表电压的高低、灯光的闪灭。界定连接器和网线的规格。 | 现在以以太网通用的网线(双绞线)。早期以太网采用的同轴电缆(现在主要用于有线电视)、光纤,现在的WiFi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器(Hub)工作在物理层。 |
有时候TCP/IP五层模型也称为TCP/IP四层模型,TCP/IP四层模型则是不考虑物理层。 同样可以用收发快递的例子来类比TCP/IP五层模型进程网络数据传输的过程。此时买家在淘宝下单,卖家发货需要填写自己的手机号和地址,买家收货同样需要填写自己的手机号和地址。然后卖家将快递交付给韵达快递运输,在发货地和收货地之间的不同地区,会有不同的快递小哥运送快递。他们运送货物可能使用不同的交通工具,比如货车:truck:、电动车等。
应用层:淘宝。通过淘宝进行交易行为。 传输层:卖家和买家。卖家的地址对应源IP地址,卖家的手机号对应源端口号;买家的地址对应目的IP地址,买家手机号对应目的端口号。 网络层:快递公司。规划发货地和收货地之间的路线。 数据链路层:快递小哥。规划相邻两地之间的传输。比如从杭州拱墅区到钱塘区选择货车运输,在钱塘区站点到某小区选择电动车运输。 物理层:交通工具。货物通过交通工具运输。
网络设备所在分层
- 主机:操作系统内核实现了从传输层到物理层的内容,即TCP/IP模型下四层
- 路由器:实现了从网络层到物理层,即TCP/IP五层模型的下三层
- 交换机:实现从数据链路层到物理层,即TCP/IP五层模型的下两层
- 集线器:仅实现物理层
此处所说的路由器和交换机为传统意义的三层路由器和二层交换机。随着网络设备技术不断发展,也出现了很多3层/4层交换机,4层路由器。
6️⃣封装
概念
应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(Header),称为封装(Encapsulation)。
不同的协议层对数据包有不同的称谓。在传输层叫做段(Segment),在网络层叫做数据报(Datagram),在数据链路层叫做帧(Frame)。
首部信息中包含了一些类似于首部有多长,载荷(Payload)有多长,上层协议是什么等信息。
比如阿娇给阿强发送了一条信息“I love you”。传输层以TCP为例,这条信息的封装过程大概是这样的:
这类似于寄快递时将物品进行密封包装。将物品密封包装一来是为了防止损坏,二来是为了贴上包装标志。包装标志是为了便于货物交接、防止错发错运,便于识别,便于运输、仓储和海关等有关部门进行查验等工作,也便于收货人提取货物,在进出口货物的外包装上标明的记号。所以在网络中的封装,主要也是为了标注信息。
7️⃣分用
概念
数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的“上层协议字段”将数据交给对应的上层协议处理。
分用其实是封装的逆过程。将首部去掉,把负载部分向上传输,就像拆包裹的过程~
本篇博客对计算机网络中的常见术语就介绍到这里啦~欢迎大家在评论区讨论交流:hibiscus: