目录
网络 互联的目的是为了 进行网络通信,更具体点就是:网通中不同主机的进程间,基于网络进行传输数据。
那在网络中,我们是如何知道将 数据 传输给哪一台 主机呢?
这就需要 使用 IP地址 来进行标识。
1. IP 地址
(1)概念:IP 描述了一台 设备 在网络中的地址。
这就好比我们在网上购物的时候,都会填写我们的地址一样,让快递员知道我们在哪里。
(2)格式:在计算机中,通常使用 4个字节(32个byte)来表示 IP
由于 32 位 太繁琐,我们通常采用 点分十进制 来进行表示
(3) 特殊 ip
例如: 127.* 通常由于 本机 环回测试,通常使用 127.0.0.1(环回ip)
环回测试:主要用于 本机 到 本机 的网络通信。
2. 端口号
(1)概念:用来定位 一台主机 上的进程 --- 用来区分不同的应用程序。
(2)格式: 通常用 2个字节来 描述端口号,所以表示的范围是 0 ~ 65535 (0一般都不使用)
(3)知名端口号:留给一些较为常见的服务器程序进行使用的
例如: 22 : ssh服务器 ; 80 :http服务器 ;443 :https服务器 ; 23 :telnet服务器 ;3306 : mysql的服务器
(4)注意事项:
同一台主机上,一个端口号只能被一个程序绑定;但是,一个程序可以绑定多个端口号。
3. 协议
在网络上,本质是通过 光/电 信号来进行传输数据,数据在传输的过程中是以二进制的形式存在的,那当我们发送 文本、图片或者视频的时候,接收方是如何辨别出来的呢?
为此,我们需要规定一份协议来规定双方的数据格式。
(1)概念:协议,网络协议的简称,网络协议是网络通信(即网络数据传输)经过的所有网络设备都必须共同遵从的一组约定、规则。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。
协议(protocol)最终体现为在网络上传输的数据包的格式。
(2)作用: 主机间通过 光电信号进行数据传输,我们就可以规定 低电平表示1,高电平表示0;高频光信号表示 1,低频光信号表示 0.这样,当光电信号传过来的时候,我们就可以根据上述协议,进行解析,最后再转化为 文本、图片等。
4. 五元组
在TCP/IP协议中,用五元组来标识一个网络通信:
1. 源IP:标识源主机
2. 源端口号:标识源主机中该次通信发送数据的进程
3. 目的IP:标识目的主机
4. 目的端口号:标识目的主机中该次通信接收数据的进程
五元组在网络通信中的作用,有些类似于快递:
5. 协议分层
协议为什么要分层呢?
就拿我们编写代码来说,一个代码越写越多,越写越复杂,如果我们不将代码拆分成多个部分,在阅读起来就非常的麻烦。
同样的,如果仅仅 一个 大的协议来解决所有的问题,那此时这个 协议就会相当 庞大且复杂,不利于我们后面的阅读、理解和修改。
所以,我们需要将协议进行分层,并按照协议的 作用/定位 进行分类,规定 不同层次协议之间的 “ 调用关系 ”: 上层协议 调用下层协议;下层协议给上层协议提供支持。
这就类似于 公司的管理制度:
协议分层的作用:
1. 将上下层协议分别进行封装:使用上层协议 不用 过多关心下层协议。
2. 每一层协议 都可以根据需要进行 灵活的替换
6. OSI七层模型
7. TCP/IP五层(或四层)模型
TCP/IP通讯协议采用了5层的层级结构:
8. 封装 和 分用
不同的协议层对数据包有不同的称谓,在传输层叫做 段 (segment) ,在网络层叫做 数据报(datagram) ,在链路层叫做 帧 (frame) 。应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header) ,称为封装 (Encapsulation)。首部信息中包含了一些类似于首部有多长,载荷(payload) 有多长,上层协议是什么等信息。数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的 " 上层协议字段 " 将数据交给对应的上层协议处理。
数据封装过程:
数据分用过程: