一、基本概念
1.Ip地址:用于识别网络主机、其他网络设备的网络地址。定位主机的网络地址。
32位的二进制数据。一般用点分十进制的形式表示:例:192:168:0:1.(0-255之间的数据)
2.端口号:用于定位主机中的进程。
3.协议:在不同主机通信的过程中,双方进行数据交换而制定的一种规则、约定。
4.协议分层:
在计算机网络中,用一个协议约定双方的通信规则,太过于复杂。即使用协议分层的形式。
协议分层的特点是:(1)各层协议之间是相互独立的,上层协议不需要知道下层协议的协议,通过调用下层协议的接口即可使用。
(2)当任意一层的协议发生变化,但只要层间的接口关系不变,其他层也不会受到影响。
在计算机网络中,有两种常见的协议体系结构:
①OSI的七层协议
但是OSI的七层协议是理论上的标准,复杂也不实用。所以在实际上用的是TCP/IP五层协议。
(2)TCP/IP的五层协议
应用层:负责进程之间的交互。(应用层的协议格式,往往是由设计程序的程序员定义。)
运输层:负责两个主机之间的通信。也称为:端到端,进程通信。(UDP\TCP协议)
网络层:负责地址管理以及路径选择。任意主机之间尽力而为服务。(IP协议)
数据链路层:负责相邻节点之间的传输。(以太网协议)
物理层:传输比特数。负责光/电的传输方式。硬件设备。
5.常见的物理设备:
路由器:实现了网络层以下的三层。
交换机:实现了数据链路层以下的两层。
集线器:实现了物理层。
5.客户端、服务器
主动发起通信的一方叫做客户端,或者获取服务的一方进程叫做客户端。
被动接受的一方叫做服务器,或者提供服务的一方进程叫做服务端。
6.请求、响应
请求:获取服务资源。客户端发给服务器的数据。
响应:返回服务资源。服务器返回给客户端的数据。
二、两台主机之间的通信
假设A在微信上给B发送了一条消息x。
A->B发送信息过程:
(1)在应用层,微信通过输入框获取到用户发送的信息。通过应用层的协议格式将信息构造应用层的数据包。
例如:规定这种格式为应用层的数据包。构造完毕后,通过调用运输层的api接口,以参数的形式将数据包交给传输层。
(2)传输层
传输层将上述数据作为一个整体,构成一个传输层的数据包。
假设使用UDP的协议格式,则传输层的数据包格式:
在UDP报头中,含有源端口,目标端口等数据。
添加UDP报头这样的过程,叫做封装。封装完毕后,调用下一层的Api。
(3)网络层
网络层收到数据包后,封装IP协议的报头。IP报头,含有源IP地址、目标IP地址等信息。调用下层协议的api。
(4)数据链路层
数据链路层收到IP数据包后,在此基础上,添加帧头和帧尾,构成以太网数据帧。交给物理层。
(5)物理层
物理层收到以太网帧(0.1.0.1)的数据后,将其转换成光信号/电信号/电磁波,然后进行发送。
不考虑中间过程,B收到A传送的消息过程:
(1)物理层
B的物理层收到了光信号、电信号、电磁波,就会将数据转换成数字信号(0.1.0.1)得到一个以太网帧后,进一将数据交给数据链路层
(2)数据链路层
按照以太网数据帧的格式,将数据解析,取出其中的载荷,交给上层协议,即:网络层。
(3)网络层
按照IP协议的格式,将数据解析,取出其中的载荷,交给上层协议
(4)传输层
按照UDP协议的格式,将数据解析,取出其中的载荷,交给上层协议
(5)应用层
按照应用程序内部的应用层协议格式进行解析,拿到数据,显示。
上述过程,也称为分用,封装的逆过程。通过协议头,进行数据分用。
对于更详细的内容,可在后序文章中看到。