5.9网络协议

news2024/12/23 18:16:35

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

将数据进行发送的时候需要借助于网线实现,这个时候会出现当传输的数据比较远的时候就借助于中继器将信号进行再生扩大,当多个机器需要交流的时候就使用集线器多个点连接(星型),但是数据不能隔离会出现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头部都含端口号,考察头部信息不多。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1677286.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python如何做一个服务器fastapi 和flask

用 fastapi 方式的话 from fastapi import FastAPIapp FastAPI()app.get("/api") def index():return "hello world"然后需要安装 uvicorn 并执行下面的命令 uvicorn server:app --port 8000 --reload最终 如果是用 flask 直接写下面的代码 # -*- cod…

FullCalendar日历组件集成实战(4)

背景 有一些应用系统或应用功能,如日程管理、任务管理需要使用到日历组件。虽然Element Plus也提供了日历组件,但功能比较简单,用来做数据展现勉强可用。但如果需要进行复杂的数据展示,以及互动操作如通过点击添加事件&#xff0…

Python GUI开发- PyQt5 开发小工具环境入门

前言 常见的python开发gui的库有 Tkinter, PyQt5, wxPython等。本教程是选择PyQt5 开发桌面小工具。 环境准备 只需pip安装即可快速准备好开发环境 pip install pyqt5快速开始 创建一个空的window窗口 Qapplication():每个GUI都必须包含…

图片转base64【Vue + 纯Html】

1.template <el-form-item label"图片"><div class"image-upload-container"><input type"file" id"imageUpload" class"image-upload" change"convertToBase64" /><label for"imageU…

LabVIEW静止无功补偿监控系统

LabVIEW静止无功补偿监控系统 随着电力系统和电力电子技术的快速发展&#xff0c;静止无功补偿器作为提高电网质量和稳定性的关键设备&#xff0c;其监控系统的研发显得非常重要。详细介绍基于LabVIEW的SVC监控系统的设计与实现过程&#xff0c;可为电力系统的优化和电力电子技…

电机控制系列模块解析(21)—— 弱磁控制

一、弱磁控制 常用的FW即弱磁控制方法一般为&#xff1a;电压外环控制、单个电流环控制、直接输出电压幅值分配控制、输出电压角度PI控制、不弱磁控制、直接解析解、查表、速度反比例曲线拟合等等。 弱磁控制相关因素&#xff1a;过调制&#xff08;母线电压的剧烈波动&#x…

(十)Python基础练习题一(50道选择题)#Python

本文整理了Python基础知识相关的练习题&#xff0c;共50道&#xff0c;适用于刚入门初级Python想巩固基础的同学。来源&#xff1a;如荷学数据科学题库&#xff08;技术专项-Python一&#xff09;。 1&#xff09; 2&#xff09; 3&#xff09; 4&#xff09; 5&#xff09; 6…

【C语言每日题解】三题:回文检查、刘备 关羽 张飞三人过年放鞭炮、约瑟夫环问题(犹太人死亡游戏)(难度up,推荐)

&#x1f970;欢迎关注 轻松拿捏C语言系列&#xff0c;来和 小哇 一起进步&#xff01;✊ &#x1f308;感谢大家的阅读、点赞、收藏和关注 &#x1f970;希望大家喜欢我本次的讲解 &#x1f31f;非常推荐最后一道题 &#x1f339; 犹太人死亡游戏&#xff0c;建议观看 &…

html--地图

<!DOCTYPE html> <html lang"en"> <head><meta charset"utf-8"><title>ECharts</title><!--Step:1 引入一个模块加载器&#xff0c;如esl.js或者require.js--><script src"js/esl.js"></scr…

RGMII基于V2.0规范解读

一、说明 RGMII&#xff08;Reduced Gigabit Media Independent Interface&#xff09;是Reduced GMII&#xff08;吉比特介质独立接口&#xff09;&#xff0c;旨在替代IEEE802.3u MII、IEEE802.3z GMII和TBI。主要目标是将MAC和PHY互连所需的引脚数量从最大28个引脚&#xf…

数据库原理与应用实验八 存储过程

目录 实验目的和要求 实验环境 实验内容与过程 实验内容&#xff1a; 操作过程&#xff1a; 实验目的和要求 熟悉存储过程的定义和使用&#xff0c;熟练运用 select ,update ,insert ,delete 命令完成对学生信息数据库的查询、更新、添加、删除操作。 实验环境 Windo…

k8s的整体架构及其内部工作原理,以及创建一个pod的原理

一、k8s整体架构 二、k8s的作用&#xff0c;为什么要用k8s&#xff0c;以及服务器的发展历程 1、服务器&#xff1a;缺点容易浪费资源&#xff0c;且每个服务器都要装系统&#xff0c;且扩展迁移成本高 2、虚拟机很好地解决了服务器浪费资源的缺点&#xff0c;且部署快&#x…

【从零开始学习Redis | 第十一篇】快速介绍Redis持久化策略

前言&#xff1a; Redis 作为一种快速、高效的内存数据库&#xff0c;被广泛应用于缓存、消息队列、会话存储等场景。然而&#xff0c;由于其特性是基于内存的&#xff0c;一旦服务器进程退出&#xff0c;内存中的数据就会丢失。为了解决这一问题&#xff0c;Redis 提供了持久…

删除表空间

Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 当某个表空间中的数据不再需要时&#xff0c;或者新创建的表空间不符合要求时&#xff0c;可以考虑删除这个表空间。若要删除表空间&#xff0c;则需要用户具有 DROP TABLESP…

【C++】认识C++(上)

目录 从C到C命名空间同名冲突命名空间的定义命名空间的使用 C的输入和输出缺省参数&#xff08;默认参数&#xff09; 从C到C C语言的出现是计算机科学和工程史上的一个重要里程碑&#xff0c;许多现代计算机语言都受C语言的影响。C语言是面向过程的&#xff0c;结构化和模块化…

社交媒体数据恢复:皮皮搞笑

一、数据恢复前的准备 在开始数据恢复之前&#xff0c;请确保您已经完成了以下准备工作&#xff1a; 确认您具有管理员权限&#xff0c;以便在操作过程中避免不必要的错误。 确保您的设备电量充足&#xff0c;以免在数据恢复过程中因电量不足而导致数据丢失。 如果您需要恢复…

解决el-upload组件上传文件403 Forbidden的问题

话不多说&#xff0c;上错误。网络显示&#xff1a; 控制台显示&#xff1a; 并且后端也没接收到任何的请求。 只需要把前端中的组件&#xff1a; action的路径修改为&#xff1a; 也就是不写前面的localhost&#xff0c;而是拼接上发送请求拼接的‘api’即可 可以看到&#x…

【前端】CSS基础(2)

文章目录 前言1、CSS选择器1.1选择器的功能1.2 选择器的种类1.2.1 基础选择器1.2.1.1 标签选择器1.2.1.2 类选择器1.2.1.3 id选择器1.2.1.4 通配符选择器1.2.1.5 伪类选择器 1.2.2 复合选择器1.2.2.1 后代选择器1.2.2.2 子选择器1.2.2.3 并集选择器 前言 这篇博客仅仅是对CSS的…

风电功率预测 | 基于RBF径向基神经网络的风电功率预测(附matlab完整源码)

风电功率预测 风电功率预测完整代码风电功率预测 基于RBF(径向基函数)神经网络的风电功率预测是一种常见的方法。RBF神经网络是一种前馈神经网络,其隐藏层使用径向基函数作为激活函数。 下面是一个基于RBF神经网络的风电功率预测的一般步骤: 数据收集:收集包括风速、风向…