当前位置:网站首页>网络原理之协议详解
网络原理之协议详解
2022-07-20 03:23:00 【库里不会投三分】
目录
基于传输层的协议
网络的原生问题
- 我们知道传输层是基于主机和主机可以通信的前提下,让进程可以和进程进行通信,那么传输层的实现要基于网络层的实现
- 在网络中的数据,是经由路由器之间,一跳一跳的,传送到目标主机上带来的两个问题(基于网络层的视角的讨论)
- 为了解决这些问题,让传输层和应用层的有志人士去解决
网络传输的不可靠
- 发送的数据,对方不能保证一定能收到
- 不能保证严格按照发送时的顺序被对方一定被接收(因为路由器的原因,数据发送的路径可能不一样和速度不一样,比如我们去北京早上A做汽车,B中文坐高铁,C下午做飞机,所以可能到达北京的顺序是BAC 也有可能是ABC BCA)
网络是不安全的
- 发送的所有数据,沿途的路由器都可以进行查看或者修改,窃听,篡改
- 别人可以伪造你发送数据
UDP协议
- 用户报文协议,它是一个很简单的传输层协议,它只是做到了传输层的最基本的职责(在主机和主机能连接的情况下,实现进程到进程的连接)
- 特点 1无连接 2不可靠传输 3面向数据报 4 收缓冲区,无发送缓冲区,但是成本便宜
- UDP的不可靠:并不是UDP协议做了什么,变得不可靠了,而是因为UDP什么都没做,把网络层的不可靠性直接表达给应用层,所以在应用层的角度,我们才说UDP是不可靠的
UDP的工作机制
- UDP的报头,所有网络协议的报头都具备的职责:如何解包(怎么把数据中方header(报头),和payload(数据内容)分开)
- 分用的问题,也就是怎么实现应用层到应用层的问题
例子
- 我们要发货的物品就是payload,而包装的袋子和袋子上的订单内容就是header
- 我们就是享受UDP服务的进程
- 送货的汽车是网络层提供的服务
UDP报头的格式
UDP首部有8个字节,由4个字段构成,每个字段都是两个字节,
- 1.源端口: 源端口号,需要对方回信时选用,不需要时全部置0.
- 2.目的端口:目的端口号,在终点交付报文的时候需要用到。
- 3.长度:UDP的数据报的长度(包括首部和数据)其最小值为8(只有首部)
- 4.校验和:检测UDP数据报在传输中是否有错,有错则丢弃(基本原理就是利用hash函数,只要是相同的是数据,经过函数处理,哈希值肯定是一样的)
缓冲区的概念
- 我们所谓的分层,都是逻辑上的概念,在硬件上来说,我们只有内存(用户态管理的内存和内核态管理的内存)
- 我们把这一块内存区域,用来存放发送或者接收的数据,称为缓冲区
- 其UDP只有收缓冲区(就想我们寄快递,有菜鸟驿站给我们暂存)
在应用层的UDP协议中,是没有发送缓冲区的,如果UDP发送数据成功,代表什么现象呢?
UDP数据只是发送到网络上了(正在传输中),就像我们生活中,我们寄信成功了,只是代表我们把信寄出去了,不知道信在哪有没有被收到
UDP发送流程
- 从应用层收到数据(将数据从应用层的内存区域(用户态)复制到内核的内存区域中)
- 准备header部分 1源端口号(socket对象中带着(本地进程的端口))2 目标端口(应用层负责填写)3 UDP长度(header长度+数据长度)通过计算 4 checksum,校验和,也是通过计算
- header+payload得到报文段(datagram)
- 等网络层发送成功(意味着数据到网卡了)
- 通知应用层发送成功
UDP的接收流程
- 从网络层收到一个新的包裹(UDP Datagram)
- 根据定长(8个字节),擦拆分为headerz和payload——解包
- 读取header的四个字段,源端口,目标端口,长度,校验和
- 判断下长度是否正确,如果长度不正确的情况下的包直接扔掉,谁都不需要通知(体现出了不可靠)
- 判断校验和是否正确(判断数据是否有没有在无意中损坏),如果有问题,直接扔掉
- 把payload放到接收缓冲区中,相关信息也放在其中
- 通知应用层来取信息(根据目标端口来找到对应的进程)
- 等着应用层来从接收缓冲区接收信息
- 如果长时间不取,也可以将数据扔掉
边栏推荐
- [leetcode] sword finger offer 58 - ii Rotate string left
- 四层、七层负载均衡的区别(转)
- [Tencent location component] wechat official account H5 calls Tencent map component
- 30-Spark入门之Spark技术栈讲解、分区、系统架构、算子和任务提交方式
- 【NOI模拟赛】思门弄数(数论,链表)
- DenseNet学习笔记(核心与resnet进行对比):
- 香港大学SPACE中国商业学院暨企业研究院第三届创新创业大赛全国总决赛圆满收官
- [upload range 1-11] basic level: characteristics, analysis and utilization
- Huawei employees revealed that this position is about to start recruiting a lot!!!
- Win: use Netsh command to configure port forwarding
猜你喜欢
Fragment 这些 API 已废弃,你还在使用吗?
To clarify the tax arrears: there is no tax arrears, and will continue to operate in compliance, rooted in China
Grouping convolution and deep separable convolution
某网站登录接口password参数还原
【AD学习记录】覆铜
Redhat 7网络服务无法启动问题(“Device does not seem to be present, delaying initialization”)处理
Go daily Gore
MySQL 事务管理
Manually operated industrial robot
MATLAB:将figure图打印成pdf格式
随机推荐
每日一题:数组中出现次数超过一半的数字(剑指Offer39)
[LeetCode]剑指 Offer 58 - II. 左旋转字符串
Fragment 这些 API 已废弃,你还在使用吗?
深度学习2-线性单元和梯度下降
【OBS】 Qt UI的文字描述
[noi simulation] Simen Nong number (number theory, linked list)
Activiti7工作流和阿里巴巴组件,二开办公OA、信息管理、ERP等等
单体 or 微服务?你以为是架构权衡?其实是认知负载!
"Weilai Cup" 2022 Niuke summer multi school training camp 1 I chiitoitsu (probability DP)
LeetCode Algorithm 138. 复制带随机指针的链表
JASMINER X4在海外爆红,获众多知名博主点赞认可
Idea多次启动同一个项目
MySQL C语言连接
我有 7种 实现web实时消息推送的方案,7种!
[LeetCode]剑指 Offer 57. 和为s的两个数字
Manually operated industrial robot
正则表达式
What parameters do you need to see when buying a server and how to see the server configuration
Merge and sort targeted questions
[R language text mining]: emotion analysis and word cloud mapping