【IP地址】
描述了网络上一个主机的位置 ~
【端口号】
描述了一个主机上的某个应用程序~
端口号本质上是2个字节的无符号整数(0-65535)~
服务器程序在启动的时候,需要绑定一个端口号,以便客户端程序来访问~
【协议】
本质上就是约定发送方发出的数据是什么样的格式,接收方按什么样的格式解析~
1)物理层协议【都是提前定义好的】
负责所有主机和网络设备之间都是相互匹配的,例如:网线、网卡与主机适配~
2)数据链路层协议【都是提前定义好的】
负责网络中相邻(一个网线相连)的两个设备之间的通信~
3)网络层协议【都是提前定义好的】
负责网络中任意两个设备(通常指不相邻设备)之间的通信,规划出一条最合理的通信路线~
4)传输层协议【都是提前定义好的】
负责起点到终点之间的通信,只关注结果(数据到没到),不关注过程(数据走哪条网络线路)
5)应用层协议【需要程序员自己设计】
使用什么应用程序,就对应什么应用层协议,该协议是由开发应用程序员设计定义的,负责解析传输的数据是干啥用的~
【举个例子:网购一条毛巾】
消费者:站在应用层的角度~ 考虑毛巾用来干啥;
商家:站在传输层的角度~ 考虑毛巾能不能发到消费者手中;
快递公司:站在网络层的的角度~ 考虑毛巾怎么给你发到当地的集散中心;
快递小哥:站在数据链路层的角度~ 考虑怎么将毛巾送到消费者手中;
快递过程中所用到的设备: 站在物理层的角度~ 考虑快递设备都可以正常使用且能匹配快递网络;
【网络设备实现的协议】
主机:实现了物理层、数据链路层、网络层、传输层、应用层
路由器:实现了物理层、数据链路层、网络层
交换机:实现了物理层、数据链路层
【举例说明不同的分层协议之间是相互配合的】
例如:使用QQ给同学发送信息~
用户A在键盘上,输入一个"hello",按下发送键~
11)应用层协议:
根据用户输入内容,把数据构造成一个应用层数据报(遵循该协议的一组数据)~
假设QQ的应用层协议报文为:
应用层协议将应用层数据报传输给传输层~
22)传输层协议:
将传输来的应用层数据报,基于当前的传输层协议,构造成一个传输层的协议报文~
传输层协议以TCP协议为例:
TCP数据报:
【封装】构造TCP数据报的过程:是TCP协议报头与应用层协议报文这两个字符串的拼接~
TCP协议报头:里面存放的是二进制数据~其中包含(源端口和目的端口)
源端口:相当于发件人电话;
目的端口:相当于收件人电话;
传输层协议将传输层协议报文传输给网络层~
33)网络层协议:
将传输来的TCP数据报,基于当前的网络层协议,构造成一个网络层的协议报文~
网络层协议以IP协议为例:
IP数据报:
【封装】构造IP数据报的过程:是IP协议报头与传输层协议报文这两个字符串的拼接~
IP协议报头:里面存放着源IP和目的IP
源IP:相当于发件人的地址(起始点地址);
目的IP:相当于收件人的地址(终止点地址);
网络层协议将网络层协议报文传输给数据链路层~
44)数据链路层协议
将传输来的IP数据报,基于当前的数据链路层协议,构造成一个数据链路层的协议报文~
数据链路层协议以 以太网为例:
以太网数据帧:
【封装】构造以太网数据帧的过程:是帧头和帧尾与IP数据报这三个字符串的拼接~
帧头:与之相邻的下一个结点的地址;
帧尾:
网络层协议将以太网数据帧传输给物理层~
55)物理层协议
将传输来的以太网数据帧(二进制数据),基于当前的物理层协议:
1)转化成高低电平,通过网线传输出去
2)转化成高频/低频的电磁波,通过光纤或者无线的方式传输出去~
封装:数据从上层协议--->下层协议,逐层构造数据报的过程称为封装~
到了此处,数据已经离开当前主机,前往下一个设备了!
66)物理层协议
主机B的网卡感知到一组高低电平,就会把这些电平翻译成一组二进制数据~
这组二进制数据其实就是以太网数据帧~
物理层协议把这组以太网数据帧传输给数据链路层~
77)数据链路层协议
【分用】将传输来的以太网数据帧,基于数据链路层协议,去掉帧头和帧尾,解析成IP数据报~
数据链路层协议把IP数据报传输给网络层~
88)网络层协议
【分用】将传输来的IP数据报,基于网络层协议,去掉IP协议报头,解析成TCP数据报~
网络层协议把TCP数据报传输给传输层~
99)传输层协议
【分用】将传输来的TCP数据报,基于传输层协议,去掉TCP协议报头,解析成应用层数据报~
传输层协议把应用层数据报传输给应用层~
00)应用层协议
【分用】应用层协议调用socket API来从内核中读取到这个应用层数据报并进行解析,将解析后得到的结果显示在对话框中~
分用:数据从下层协议-->上层协议,逐层解析数据报的过程,称为分用~
【两个主机之间含交换机】
【两个主机之间含路由器】
【两个主机之间含路由器和交换机】