当前位置: 首页 > news >正文

5.9网络协议

由网卡发送数据通过网线进行发送,当网卡接收到信号以后将数据传给内核数据区,然后由操作系统交给相应的进程。

将数据进行发送的时候需要借助于网线实现,这个时候会出现当传输的数据比较远的时候就借助于中继器将信号进行再生扩大,当多个机器需要交流的时候就使用集线器多个点连接(星型),但是数据不能隔离会出现a给b的数据会发给每一个点数据就非常多,所以使用网桥隔离一片区域,使得数据不要发送超出这样的一片区域。后来使用更高级的硬件设备:交换机:网桥+集线器

当然当进行长距离的数据传输的时候,还需要借助于路由器进行转发。

网络协议为什么要分层是因为需要规定每个步骤的条件和要求,可以更好的提高效率!每一层只需要关注自己的事情,应用层只需要知道自己是借助于qq发送一个文本信息,对面的应用层也是知道自己的qq发来了一个文本信息。

用户不能进到服务器中,用户端发送请求,服务器端在相应的ip端口监听接收请求分析请求并且返回相应的信息。

采用多层的方式,例如说是在网络层添加相应的ip头部,路由器每到一个节点就会拆来查看相应的IP地址内容,因为ip地址是按照地区进行划分的,会大致向目的地发。

传输层以及上面的层是端到端的层次就是在逻辑上从这个用户到另外一个用户,只需要在一端进行解析,然后再另外一端进行解析,中间部分都是不会解析的当作01数据。

unix系统底层默认实现tcp/ip实现,cc++程序员主要是关注应用层的协议。

应用层:http,dns,ftp,smtp 传输层:tcp,udp 网络层:ip 

应用层可以自定义新协议,只要保证交流的两端进行数据的交流按照自己认同的方式进行交流就可以。c++程序员有一定的概率会自己写自己的协议。

网络就是获取资源:

资源在哪个地方:URL 资源怎么在网络中进行传输: HTTP  论文的格式:HTML

URL也就是一般说的网址链接。域名-----》ip,如果没有找到响应的的域名对应的ip就找dns的服务器解析。

域名只是和ip对应,但是不包含端口号。

在发送信息的时候将论文以HTML形式发送,通过http协议包装进行发送。其中包括http协议:

请求行,请求头(消息头),空行,正文。

用户发送http请求信息(其实主要是看头部的信息),服务器发送http响应信息

https常用的端口是443端口,http端口是80端口。有时候可能是指明的那就找指明的端口服务。

请求行包含的内容:请求方式, 请求资源, 请求协议

请求方式:主要有GET和POST两种方式,大多数请求是GET,GET常用于获取数据,POST是用于服务器提交数据

还有其他的请求方法,有很多细分的标准方式,但大多都是用get和post涵盖。

服务器不管是谁发的,只看发来的数据是否是符合协议标准。

get请求一般把参数放在资源路径之后,post请求放在请求正文中

语法也可以get参数放在正文,post请求放在路径之后,不符合常理。

所以说登录密码等等都是通过post请求

确定是get还是post请求就是看如果是获取数据就是get,如果是提交数据就是post。一般都是既会提交数据又要获取数据,这个时候就是哪个是主要的点。

一般时候都是获取信息,但是当收藏文章或者放购物车的时候是提交信息。

请求资源中的路径只是一个标记,并不是在目标服务器真的有这样的一个目录。

请求协议

http1.1和http1.0 :http1.1链接以后不要断开,等多次的信息发送完以后才断开,如果是在短时间内频繁发送多次请求性能更好。

在进行发送数据以前需要先进行三次握手和四次挥手使得在链接以前进行握手确认,进行四次挥手确认断开链接。

请求头的信息是客户端给服务器看的。

accept: 大类型/小类型:vedio/mp4 text/txt   权重 q=...

采用直接输入网址发起http请求没有reffer,通过在一个网站中进行跳转到另外一个网页这个时候会携带reffer带的就是原来网页的路径。

http协议是非常灵活的但是tcp,udp不灵活。http中可以有不合实际的信息。

访问一个网站首先是先返回一个html代码,解析代码发现有图片然后就去发起请求然后拿图片以及图片的相关的信息,如果刷新的时候将图片的相关信息发送过去,如果图片的信息没有改变,就不会再返回图片,而是要求用户端从内存中加载。

cookie是一个机器的标识,IP会变化但是cookie发送给服务器的时候,服务器就知道是你。

 post用于指向要访问的目标服务器上的虚拟主机,虽然不同的域名指向相同的ip但还有post可以指明在同一个服务器上的不同虚拟主机。

响应信息和请求信息格式差不多。

响应行最重要的状态码:例如http协议404响应报文的状态段。状态码分为五个段,几百段就是几开头,每个段都有自己的功能。200段表示正常访问,300表示我没有资源但我知道资源在哪,400段状态码表示没有这个资源但服务器是在的。500段(505,507)服务器内部出现错误,一定代码有问题。

因为http协议可以自己写所以可能会出现很多自己不认识的字段。

抓包

抓包可以确定是发送端接收还是接收端抓包有问题,参数对不对,信息对不对等等。

通过分析http一个请求,获取关键信息就叫做抓包

首先检查URL  协议http, 资源路径,参数

请求方式:GET or POST

看看有没有响应,响应状态码参数,响应是不是相关的数据,头部信息一般意义不大

这些如果没有问题很可能是自己的代码有问题。

https:相比于http更安全,因为https是加密的,所以说抓包也是看不懂的。

证书,对称加密,非对称加密。

买证书可以去相应的服务器验证是否安全;对称加密:知道怎么加密就知道怎么解密;

非对称加密:公钥-》加密-》密文,密文-》私钥-》明文。这个过程是不可逆的,所以说即使获得公钥也不能解密。

往往对称加密的效率比较高,所以说一般也是用对称加密来实现。

服务器在现实中几乎没有发起请求的,需要服务器提供数据就是用GET请求

传输层:主要讨论tcp和udp这两个协议

相较于应用层会学习以及自己也可以定义属于自己的协议,但是传输层学习的协议是比较少的,主要是tcp和udp。传输层的头部(固定部分20字节)每个位都有准确的定义,不能随意。

在发送信息的时候是在传输层+端口,在IP层+ip

结合上面的信息,http是在传输层是借助于tcp协议的,这就是在传输的时候需要先进行三次握手,完成以后需要进行四次挥手(前两次挥手表示客户与服务器断开连接,后两次表示服务器与客户端断开链接)。

tcp连接是一个可靠的面向连接的全双工的连接

可靠:三四握手挥手,每次发送信息都有确认信息(可能是累计确认),超时重传快速重传。

确认:可能不会每一个都确认是累计确认,接收窗口中没有按照顺序到达对于中断未到的一段进行反复请求当请求到三次的时候就进行重发。

udp是一个不可靠的连接,是直接放到网络,效率比较高,现在的正确传输率在90%以上。

传输层在理论上是端到端的,但是在现实中并不是端到端的,就是因为局域网的存在会进行nat的转换,所以会对于端口号ip都进行修改。

当确认位ACK为0的时候ack确认号是没有意义的。

注意数据比较大的时候,会进行切片发送,并且不是会对于每一片都确认,会进行累计确认的方式,放到缓冲区中。在窗口中收集到了足够的数据的时候,就向上传送。

往往在进行tcp传输的时候,不常用到超时重传但是会用到累计快速重传的方式。因为当一直没有收到其中中断的一段的时候,就不断请求该段,当请求超过三次的时候,就重发。

在客户端和服务器端使用2msl,就是会等待可能出现收不到的情况。谁先挥手谁先等timewait时间

udp并不会在传输层进行切片,因为不能进行拼接,所以最终的切片任务交给网络层。

按照理论来说,传输层是端到端的,所以说网络层的交换机路由器等等设备在理论上不能查看tcp和udp头部信息。而ip头部是可以被这些设备打开查看的。

ip分为ipv4和ipv6。ipv4分为abcd类地址,有4个字节32位bit

ipv4不够用------》使用ipv6.  局域网使得ipv4可以一直存在,足够使用。

局域网向公网ip进行转换,通过net协议。局域网ip地址:10.x.x.x, 172.16.x.x - 172.31.x.x, 192.168.x.x - 192.168.x.x

买的云服务器往往给的是公网ip

当tcp向下传的时候往往向下传的是已经分好片的,所以不需要在网络层进行分片,但是udp是没有进行分号片,所以需要在网络层进行分片,通过标识位来确定属于同一块。通过片偏移来确认在该块的哪一个位置。

DHCP服务器是用来分配局域网内的ip,即使不变化硬件,也会变化网络,因为DHCP会有时间限制。ICMP追踪在网络上的传输情况。

ping ip 看自己能否和这个设备连接上了吗?很重要,如果不能ping通那么根本就没有连接成功。

以太网IEEE802.3定义以太网的标准。解决直连的设备之间的通信。在数据链路层。以太网帧添加的目的地址和源地址都是mac地址,后面还有crc检验字段。在每个硬件设备之间进行传输的过程中不断修改。其实前面还有前导码。

ARP协议当知道一个ip地址但是不知道MAC地址,以太网帧的目的地址写全1,通过ip网关知道是发给自己的回复附上自己的MAC地址。

会有一个对外的ip(大概率是一个局域网ip),操作系统需要发送数据的时候就是借助于网卡

一开始是输入域名,通过域名解析DNS获取相应的ip地址。然后进行三次握手和四次挥手,注意因为是在局域网中,所以会进行ip和端口号的修改通过NAT协议。

重点理解

应用层---》传输层---》网络层

传输层:确定自己和对方的端口号

网络层:确定自己和对方的IP地址

重要的内容:

应用层主要需要学习的内容是http协议

请求信息包含四个部分:请求行, 请求头,空行, 正文

请求行:请求方式,请求资源, 请求协议

请求方式GET用于获取数据,POST用于提交数据

抓包, 关注重点 , URL域名(ip+端口)看是否发对地方,协议(是否使用正确的协议)

查看状态码,如果500段那么是服务器代码出现问题。查看返回值。

http和https的区别:

https更加安全,会有证书保证安全。还有加密,包含对称加密和非对称加密

传输层主要需要学习的内容是tcp和udp协议

tcp和udp区别:

tcp可靠,udp不可靠

tcp连接机制:三次握手和四次挥手,还有超时重传,累计确认,快速重传的方式。

tcp和udp头部都含端口号,考察头部信息不多。

相关文章:

5.9网络协议

由网卡发送数据通过网线进行发送,当网卡接收到信号以后将数据传给内核数据区,然后由操作系统交给相应的进程。 将数据进行发送的时候需要借助于网线实现,这个时候会出现当传输的数据比较远的时候就借助于中继器将信号进行再生扩大&#xff0…...

QT客户端开发的注意事项

QT客户端开发是一个涉及图形用户界面(GUI)设计、网络编程、数据库交互等多个方面的复杂过程。以下是在进行QT客户端开发时应注意的一些关键事项,通过关注这些事项,可以提高QT客户端应用的质量和开发效率。北京木奇移动技术有限公司…...

k8s源码编译失败:Makefile:1: *** 缺失分隔符。 停止。

目录 问题解决 更换Arch或系统 问题解决 编译k8s源码的kubelet时执行make失败:Makefile:1: *** 缺失分隔符。 停止。 首先,查看文件内容 # cat Makefile build/root/Makefile 修改Makefile,给第一行前增加include,如下&…...

服务器数据恢复—拯救raid5阵列数据行动,raid5数据恢复案例分享

Raid5数据恢复算法原理: 分布式奇偶校验的独立磁盘结构(被称之为raid5)的数据恢复有一个“奇偶校验”的概念。可以简单的理解为二进制运算中的“异或运算”,通常使用的标识是xor。运算规则:若二者值相同则结果为0&…...

旅游集市数仓建设

旅游集市数仓建设 小白如何从0到1成为大数据工程师 目录 旅游集市数仓建设 1.上传数据 2.可能用到的UDF函数 3.创建所需数据库及表 1)ODS层 ①ods_oidd ②ods_wcdr ③ods_ddr ④ods_dpi 2)DWD层 ①dwd_res_regn_mergelocation_msk_d ②dwm_s…...

vue实现点击高亮效果

<view class"tabs"><textv-for"(item, index) in subTypes":key"item.id"class"text":class"{ active: index activeIndex }"//动态绑定高亮类&#xff1a;判断下标是否等于当前下标tap"activeIndex index&…...

uniapp 配置请求代理+请求封装

uniapp官网提供了三种方式&#xff1a;什么是跨域 | uni-app官网 1. 通过uniapp自带浏览器 打开项目是不存在跨域的 第二种方式&#xff1a; "h5" : {"template" : "static/index.html","devServer": {"proxy": {&quo…...

代码随想录算法训练营第二十八天|​216.组合总和III​、17.电话号码的字母组合

216.组合总和III 文档讲解:代码随想录 题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 这一题与昨天的组合差不多&#xff0c;区别就在只有和是目标值的时候才会加入到result数组中&#xff0c;并且在回溯时&#xff0c;会处理sum的值 class Solution:def __i…...

大模型prompt实例:知识库信息质量校验模块

大模型相关目录 大模型&#xff0c;包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步&#xff0c;扬帆起航。 大模型应用向开发路径&#xff1a;AI代理工作流大模型应用开发实用开源项目汇总大模…...

正则表达式和lambda表达式

正则表达式&#xff08;Regular Expressions&#xff09;和Lambda表达式虽然都包含“表达式”一词&#xff0c;但它们在编程中的作用和用法是完全不同的。让我们详细比较一下它们的定义、用途和应用场景&#xff1a; 正则表达式 定义&#xff1a;正则表达式是一种用于匹配文本…...

pyenv 之 python 多版本管理(win11)

1. 背景 常常会用到Python的多个版本&#xff0c;因此可以使用Pyenv来对Python版本进行管理。 2. win11下载 pyenv 在终端执行下载语句&#xff1a; pip install pyenv-win --target D:\software\pyenv 其中 D:\software\pyenv 为你想要下载到的文件目录&#xff0c;建议在 …...

nodemon运行ts文件

https://juejin.cn/post/7035637086451400734 nodemon经常用来调试js文件&#xff0c;大家都是知道的&#xff0c;但是用nodemon来调试ts文件&#xff0c;大家试过吗&#xff1f; 如果直接运行nodemon index.ts是会报错的。 ts 复制代码 //index.ts console.log(1) 需要全局…...

内网渗透瑞士军刀-impacket工具解析(二)

impacket工具解析之Kerberos认证协议 上一期我们介绍了impacket中ntlm协议的实现&#xff0c;在Windows认证中除了使用ntlm认证&#xff0c;还支持Kerberos认证协议&#xff0c;Kerberos认证也是Windows 活动目录中占比最高的认证方式。 什么是Kerberos协议&#xff1f; Kerb…...

huggingface 笔记:pipeline

1 介绍 pipeline() 是使用预训练模型进行推理的最简单和最快速的方式。可以针对不同模态的许多任务直接使用 pipeline() 2 举例&#xff1a;情感分析 2.1 创建pipeline实例 from transformers import pipelineclassifier pipeline("sentiment-analysis") #首先创…...

玩转Matlab-Simscape(初级)-01-从一个简单模型开始学习之旅

** 玩转Matlab-Simscape&#xff08;初级&#xff09;- 01 - 从一个简单模型开始学习之旅 ** 目录 玩转Matlab-Simscape&#xff08;初级&#xff09;- 01 - 从一个简单模型开始学习之旅 前言一、从模板开始建模二、建模一个简单的连杆2.1 建模2.2 生成子系统 总结 前言 在产…...

电脑录屏软件有哪些?这3款神器必须要知道

在当今现代社会&#xff0c;电脑录屏软件已经成为人们日常生活中不可或缺的一部分。无论是录制游戏精彩瞬间、制作教程、还是在线会议记录&#xff0c;一款好用的电脑录屏软件都能帮助我们更高效地完成任务。可是电脑录屏软件有哪些呢&#xff1f;接下来&#xff0c;我们将介绍…...

如何在华企盾DSC防泄密系统中设置文件自动加密?

在华企盾DSC系统中设置文件自动加密的过程&#xff0c;简单且用户友好&#xff0c;确保了企业数据的安全&#xff0c;同时不干扰日常工作流程。以下是设置文件自动加密的步骤&#xff1a; 系统安装与配置&#xff1a;确保华企盾DSC数据防泄密系统已经在企业的网络中正确安装和配…...

【DevOps】Dockerfile详解,做自己的docker镜像

学会使用DockerHub找自己想要的镜像以后&#xff0c;我们会很方便的使用一些公用镜像仓库的Docker镜像。但是开发和部署的过程中&#xff0c;能找到的镜像可能并不能满足我们需要&#xff0c;这样我们就需要自己制作Docker镜像。我们通过需要编写一个 Dockerfile&#xff0c;然…...

CSRF 攻击实验:Token 不存在绕过验证

前言 CSRF&#xff08;Cross-Site Request Forgery&#xff09;&#xff0c;也称为XSRF&#xff0c;是一种安全漏洞&#xff0c;攻击者通过欺骗用户在受信任网站上执行非自愿的操作&#xff0c;以实现未经授权的请求。 CSRF攻击利用了网站对用户提交的请求缺乏充分验证和防范…...

c#教程——索引器

前言&#xff1a; 索引器&#xff08;Indexer&#xff09;可以像操作数组一样来访问对象的元素。它允许你使用索引来访问对象中的元素&#xff0c;就像使用数组索引一样。在C#中&#xff0c;索引器的定义方式类似于属性&#xff0c;但具有类似数组的访问方式。 索引器&#x…...

麒麟服务器上执行可执行脚本报错:bash: ./xx: Permission denied(完整版)

前情提要 本来都好好的&#xff0c;我重启了服务器以后就开始报这个错了&#xff0c;而我的麒麟服务器目前是这个情况&#xff1a; 已经在服务器上配置好了 ssh 免密登录&#xff0c;在命令行里执行 ssh -o StrictHostKeyCheckingno -p 22 usernamexxx.xxx.xxx.xxx 可以正常登…...

触觉美学:移动端UI设计的视觉盛宴

...

前端起dev从110秒减少到7秒, 开发体验大幅提升

[webpack由浅入深]系列的内容 第一层: 了解一个小功能的完整流程. 看完可以满足好奇心和应付原理级别面试.第二层: 源码陪读, webpack源码比较灵活, 自己看容易陷入迷惑. 文章里会贴出关键流程的代码来辅助阅读源码. 如果你正在自己调试, 在这些方法上下断点会节约你宝贵的时间…...

Flink CDC 原理

简介 Flink CDC&#xff08;Change Data Capture&#xff09;是 Apache Flink 提供的一个变更数据捕获工具集。它可以监控数据库的变更&#xff0c;并将这些变更实时地以流的形式提供给下游系统&#xff0c;这些变更包括插入、更新和删除操作。 Flink CDC 适用于需要实时数据…...

Axure网上超市用户端APP原型 (O2O生鲜电商/买菜到家/数字零售/京东到家/抖音超市领域)

作品概况 页面数量&#xff1a;共 100 页 源文件格式&#xff1a;rp格式&#xff0c;兼容 Axure RP 9/10&#xff0c;非程序软件无源代码 适用领域&#xff1a;O2O生鲜电商、网上超市、买菜到家、数字零售 作品特色 本作品为网上超市用户消费端Axure交互原型&#xff0c;属于…...

外包公司中能学到技术的都是那些人?

在外包公司能够有效学习并提升技术的人&#xff0c;通常具备以下特点和行为模式&#xff1a; 自我驱动力强&#xff1a;这类人有强烈的学习欲望和提升自我的动机&#xff0c;不依赖公司安排的培训&#xff0c;而是主动寻找学习资源&#xff0c;如在线课程、技术书籍、开源项目等…...

JavaEE初阶-多线程进阶2

文章目录 前言一、CAS1.1 CAS的概念1.2 原子类1.3 CAS的ABA问题 二、JUC中常用类2.1 Callable接口2.2 ReentrantLock&#xff08;可重入&#xff09;2.3 Semaphore信号量2.4 CountDownLatch类2.5 CopyOnWriteArrayList类2.6 ConcurrentHashMap 前言 对于多线程进阶的部分&…...

B/S和C/S框架

一、B/S框架 B/S框架是指Browser/Server框架&#xff0c;即基于浏览器和服务器的应用程序开发框架。在B/S架构中&#xff0c;用户通过浏览器&#xff08;Browser&#xff09;访问服务器&#xff08;Server&#xff09;上的应用程序或网站&#xff0c;而无需在用户端安装额外的客…...

机器学习中常用的几种距离——欧式、余弦等

目录 一、欧式距离&#xff08;L2距离&#xff09;二、曼哈顿距离&#xff08;L1距离&#xff09;三、汉明距离四、余弦相似度 一、欧式距离&#xff08;L2距离&#xff09; &#xff08;1&#xff09;二维空间的距离公式&#xff08;三维空间的在这个基础上类推&#xff09;&…...

2024 Google I/O Android 相关内容汇总

2024 Google I/O Android 相关内容汇总 本次 Google I/O 的核心虽然是 AI &#xff0c;但是 Android 也是作为主要议题出现&#xff0c; Android 部分可以简单分为产品和开发相关内容&#xff0c;接下来主要介绍这两部分的相关更新。 重点开始开发相关&#xff0c;内容不少 产…...