网络原理(qq消息发送原理)

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协议中,⽤五元组来标识⼀个⽹络通信:

  1. 源IP:标识源主机
  2. 源端⼝号:标识源主机中该次通信发送数据的进程
  3. ⽬的IP:标识⽬的主机
  4. ⽬的端⼝号:标识⽬的主机中该次通信接收数据的进程
  5. 协议号:标识发送进程和接收进程双⽅约定的数据格式

在这里插入图片描述

可以在cmd中,输⼊ netstat -ano 查看⽹络数据传输中的五元组信息:

协议分层

分层的作⽤

为什么需要⽹络协议的分层?

因为网络协议非常的复杂,对于复杂问题进行拆分,拆分成多个功能单一的协议。这样也可以解耦合。
按照不同功能分成不同层级每一个层级都有自己的主线任务,上层协议会调用下层协议的功能,下层协议会为上层协议提供服务(不能够越级调用)

网络协议的分层有什么好处?

分层最⼤的好处,类似于⾯向接⼝编程:定义好两层间的接⼝规范,让双⽅遵循这个规范来对接。
在代码中,类似于定义好⼀个接⼝,⼀⽅为接⼝的实现(提供⽅,提供服务),⼀⽅为接⼝的使⽤(使⽤⽅,使⽤服务):
• 对于使⽤⽅来说,并不关⼼提供⽅是如何实现的,只需要使⽤接⼝即可
• 对于提供⽅来说,利⽤封装的特性,隐藏了实现的细节,只需要开放接⼝即可。

OSI七层模型

  1. 物理层

连接器与网线规格的协议

在这里插入图片描述

  1. 数据链路层
    在这里插入图片描述

  2. 网络层(网卡层)
    在这里插入图片描述

  3. 传输层
    在这里插入图片描述

  4. 会话层
    在这里插入图片描述

  5. 表示层
    在这里插入图片描述

  6. 应用层

在这里插入图片描述

TCP/IP五层模型

  1. 物理层
  2. 数据链路层
  3. 网络层
  4. 传输层
  5. 应用层

协议的层和层之间是如何配合的?
1.我们假设用qq发送一个“hello”,qq应用程序首先会把上述传递内容组织成一个“应用层数据包”。对于应用层不同协议组织数据的格式也是不同的
那么qq这个应用程序就是应用层,我们假设他的协议是:
发送人qq号+接收人qq号+时间+消息正文+/n

![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/1b0c9cb3dc5d4481b2a5f7f35a99098e.png

把结构化数据转化成二进制字符串称为序列化
把二进制字符串转化成结构化数据称为反序列化

2.应用层数据包有了,qq的应用程序就会调用系统的API(称Socket API)来进行传输。应用层现在把数据包交给传输层,通过传输层(操作系统提供的API)让应用程序调用
然后到传输层会进一步进行进行包装,我们现在多用的传输层协议一般是TCP,UDP.我们按UDP协议进行
在这里插入图片描述
3.传输层的构造好数据包后,又通过网络层API调用,进一步进行包装,

在这里插入图片描述
这里就是收件人的IP地址和发件人的IP地址
4.然后又通过数据链路层API的调用将数据包交给数据链路层的协议,进一步包装
数据链路层的典型协议:以太网(万维网)
在这里插入图片描述
5.物理层
上述数据帧本质上还是二进制数据,然后通过硬件设备把这个经过五层协议包装的数据包(还是二进制数据)转化成光信号,电信号的形式进行发送

上述加数据报头的过程叫做“封装”。

而对于接收方来说就类似于对上述操作反过来拆装,

相关推荐

  1. 指代消解原理

    2024-04-28 19:54:05       11 阅读
  2. 网络原理——应用层

    2024-04-28 19:54:05       28 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-28 19:54:05       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-28 19:54:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-28 19:54:05       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-28 19:54:05       20 阅读

热门阅读

  1. CMUS狮身人面像(三)-建立一个语音词典

    2024-04-28 19:54:05       14 阅读
  2. 监控服务进程并自动重启 monitor

    2024-04-28 19:54:05       11 阅读
  3. ABAP 常用的日期相关的函数

    2024-04-28 19:54:05       11 阅读
  4. 设计模式之创建型模式总结

    2024-04-28 19:54:05       12 阅读
  5. C++并发编程 - 线程管理

    2024-04-28 19:54:05       9 阅读
  6. DreamFusion:深入解读其原理、功能与应用

    2024-04-28 19:54:05       12 阅读
  7. 一种基于LLM的辅助教学方法与流程

    2024-04-28 19:54:05       10 阅读
  8. ubuntu安装源问题

    2024-04-28 19:54:05       13 阅读