1.网络初识
IP地址
概念:
IP地址主要⽤于标识⽹络主机、其他⽹络设备(如路由器)的⽹络地址。简单说,IP地址⽤于定位主机的⽹络地址。
就像我们发送快递⼀样,需要知道对⽅的收货地址,快递员才能将包裹送到⽬的地。
格式
IP地址是⼀个32位的⼆进制数,通常被分割为4个“8位⼆进制数”(也就是4个字节),如:
01100100.00000100.00000101.00000110。
通常⽤“点分⼗进制”的⽅式来表⽰,即 a.b.c.d 的形式(a,b,c,d都是0~255之间的⼗进制整数)。 如:100.4.5.6。
端口号
概念:
在⽹络通信中,IP地址⽤于标识主机⽹络地址,端⼝号可以标识主机中发送数据、接收数据的进程。 简单说:端⼝号⽤于定位主机中的进程。
类似发送快递时,不光需要指定收货地址(IP地址),还需要指定收货⼈(端⼝号)。
格式:
端⼝号是0~65535范围的数字,在⽹络通信中,进程可以通过绑定⼀个端⼝号,来发送及接收⽹络数 据。
2.认识协议
概念
协议,⽹络协议的简称,⽹络协议是⽹络通信(即⽹络数据传输)经过的所有⽹络设备都必须共同遵从的⼀组约定、规则。如怎么样建⽴连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能 相互通信交流。
协议(protocol)最终体现为在⽹络上传输的数据包的格式。
五元组
在TCP/IP协议中,⽤五元组来标识⼀个⽹络通信:
- 源IP:标识源主机
- 源端⼝号:标识源主机中该次通信发送数据的进程
- ⽬的IP:标识⽬的主机
- ⽬的端⼝号:标识⽬的主机中该次通信接收数据的进程
- 协议号:标识发送进程和接收进程双⽅约定的数据格式
可以在cmd中,输⼊ netstat -ano 查看⽹络数据传输中的五元组信息:
协议分层
分层的作⽤
为什么需要⽹络协议的分层?
因为网络协议非常的复杂,对于复杂问题进行拆分,拆分成多个功能单一的协议。这样也可以解耦合。
按照不同功能分成不同层级每一个层级都有自己的主线任务,上层协议会调用下层协议的功能,下层协议会为上层协议提供服务(不能够越级调用)
网络协议的分层有什么好处?
分层最⼤的好处,类似于⾯向接⼝编程:定义好两层间的接⼝规范,让双⽅遵循这个规范来对接。
在代码中,类似于定义好⼀个接⼝,⼀⽅为接⼝的实现(提供⽅,提供服务),⼀⽅为接⼝的使⽤(使⽤⽅,使⽤服务):
• 对于使⽤⽅来说,并不关⼼提供⽅是如何实现的,只需要使⽤接⼝即可
• 对于提供⽅来说,利⽤封装的特性,隐藏了实现的细节,只需要开放接⼝即可。
OSI七层模型
- 物理层
连接器与网线规格的协议
-
数据链路层
-
网络层(网卡层)
-
传输层
-
会话层
-
表示层
-
应用层
TCP/IP五层模型
- 物理层
- 数据链路层
- 网络层
- 传输层
- 应用层
协议的层和层之间是如何配合的?
1.我们假设用qq发送一个“hello”,qq应用程序首先会把上述传递内容组织成一个“应用层数据包”。对于应用层不同协议组织数据的格式也是不同的
那么qq这个应用程序就是应用层,我们假设他的协议是:
发送人qq号+接收人qq号+时间+消息正文+/n
把结构化数据转化成二进制字符串称为序列化
把二进制字符串转化成结构化数据称为反序列化
2.应用层数据包有了,qq的应用程序就会调用系统的API(称Socket API)来进行传输。应用层现在把数据包交给传输层,通过传输层(操作系统提供的API)让应用程序调用
然后到传输层会进一步进行进行包装,我们现在多用的传输层协议一般是TCP,UDP.我们按UDP协议进行
3.传输层的构造好数据包后,又通过网络层API调用,进一步进行包装,
这里就是收件人的IP地址和发件人的IP地址
4.然后又通过数据链路层API的调用将数据包交给数据链路层的协议,进一步包装
数据链路层的典型协议:以太网(万维网)
5.物理层
上述数据帧本质上还是二进制数据,然后通过硬件设备把这个经过五层协议包装的数据包(还是二进制数据)转化成光信号,电信号的形式进行发送
上述加数据报头的过程叫做“封装”。
而对于接收方来说就类似于对上述操作反过来拆装,