2022年圣诞节到来啦,很高兴这次我们又能一起度过~
祝大家圣诞快乐🎄
网络互连的目的是进行网络通信, 也即是网络数据传输, 再具体一点, 是网络主机中的不同进程间, 基于网络传输数据.
那么, 在组建的网络中, 如何判断到底是从哪台主机, 将数据传输到那台主机呢? 这就需要使用IP地址来标识了.
IP地址
概念
IP地址 (Internet Protocol Address) 是指互联网协议地址, 又译为网际协议地址.
IP地址是IP协议提供的一种统一的地址格式, 它为互联网上的每一个网络和每一台主机分配一个逻辑地址, 以此来屏蔽物理地址的差异.
简单来说, IP地址用于定位主机的网络地址.
就像我们发收快递一样, 需要知道对方的地址才能发收快递, 才能把你的包裹送到你手里, 不会送错.
格式
IP地址是一个32位的二进制数, 通常被分割为4个 “8位二进制数” (也就是4个字节), 如:
01100100.00000100.00000101.00000110.
通常用 "点分十进制" 的方式来表示, 即 a.b.c.d 的形式 (a,b,c,d都是0~255之间的十进制整数) . 如:127.0.0.1
特殊IP
像上面写的127.0.0.1就是特殊IP, 127.*的IP地址用于本机环回测试, 通常都是127.0.0.1
端口号
IP地址解决了网络通信时, 定位主机的问题, 那么问题又来了, 数据传输到目的主机后, 由哪个进程来接收数据呢, 这个时候就需要端口号来标识了.
概念
在网络通信中, 端口号用来标识主机中发送数据, 接收数据的进程. 总的来说就是: 端口号用于定位主机中的进程.
类似于发送快递, 不仅仅需要收货地址(IP地址), 还需要写收货人(端口号).
格式
端口号是 0~65535 范围的数字, 在网络通信中, 进程可以通过绑定一个端口号, 来发送及接收网络数据.
注意
两个不同的进程, 不能绑定同一个端口号, 但一个进程可以绑定多个端口号.
一个进程启动后, 系统会随机分配一个端口(这个端口一般被称之为启动端口), 在代码里面, 进入网络编程时, 需要绑定端口号(用于收发数据的端口).
认识协议
我们都知道, 网络通信是基于二进制 0/1 数据来传输的, 然而我们平时需要传输的数据可能会有: 图片 视频 文字等等, 不同类型的数据, 格式大概率是不同的, 要是大家想发什么发什么我们是看不懂数据的, 所以我们就需要协议来规范双方的数据格式.
概念
网络协议, 是网络通信 (即网络数据传输), 经过的所有网络设备 都必须遵守的一组约定 or 规则. 他通常由三要素组成:
- 语法: 即数据与控制信息的结构或格式
- 语义: 需要发出哪种控制信息, 完成什么动作或者做出什么响应
- 时序: 对于事件实现顺序的说明
网络协议最终体现为网络上传输的数据包的格式.
协议的作用
为什么需要协议呢?
因为计算机厂商很多, 操作系统也很多, 各种计算机网络设备也很多, 为了让大家都能顺利的进行通信, 就需要约定一个通用的规则大家一起遵守, 这就是网络协议.
端口
系统的端口号是 0-65535, 其中 0-1023被称为知名端口号
例如:
- 22端口, 预留给SSH服务器绑定SSH协议
- 80端口, 预留给Http服务器绑定Http协议