| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 42-计算机网络总结 -> 正文阅读 |
|
[网络协议]42-计算机网络总结 |
讲讲OSI协议应用层:为应用程序间提供通信和交互的协议,比如DNS,HTTP 传输层:为两台主机中的进程提供通用的数据传输服务,为应用层把报文封装成TCP报文段或者UDP用户数据进行传送,比如TCP和UDP 网络层:为两台主机提供通信服务,为传输层产生的报文段或用户数据报封装成IP数据报进行传送,协议为ARP,ICMP 数据链路层:为两台主机之间的数据传输提供服务,两台主机之间的传输,总是在一段一段的链路上传送的,这就需要链路层协议,为网络层把IP数据包封装成帧,在链路上进行传递,协议为CSMA,PPP 物理层:在传输媒体上进行传输比特流,尽可能的为数据链路层屏蔽传输媒体和通信手段的差异,把帧拆分成比特流在传输媒介上进行传输,原则有时分复用,频分,码多分址等 DNS协议域名解析协议,提供了域名和IP地址之间相互转换的服务 可以使用UDP或者TCP,但一般用UDP,因为快,只有一个请求,一个应答就可以了,但是UDP的传输内容不能超过512字节,一般上客户端向DNS服务器查域名,返回内容都不超过512字节,所以UDP够用了 为什么区域传送使用TCP区域传送是主DNS服务器上的数据有变化了,需要向下传送变化的那份数据时,因为数据必然很大,并且要保证传输可靠,所以不能使用UDP,因为DNS是分布式数据库,主DNS复制内容的时候,不能用不可靠的UDP,需要使用TCP协议 DHCP协议给用户提供了即插即用的联网方式,用户不再需要手动配置IP地址等信息,其自动为用户配置IP地址,子网掩码以及网关等信息 应用层还有没有别的协议?FTP:动态主机配置协议 SMTP:电子邮件协议 Web页面请求过程
?HTTP状态码
HTTP长连接和短连接讲讲,流水线是什么?长短连接:当浏览器访问一个包含多张图片的网站,如果用短连接就会建立大量的tcp连接,这样很消耗资源,长链接只允许建立一个TCP连接,就能进行多次HTTP通信,1.1之前默认短连接,1.1之后默认长连接 流水线:默认情况下HTTP请求是按照顺序发的,下一个请求只有在当前请求收到响应之后才会被发出,流水线就是在一个HTTP长链接下连续发出请求,不用等待响应返回,减少延迟 Cookie和Session的区别?Cookie是保存在客户端浏览器里的一种信息载体,用来保存一些站点的用户数据,这样能为用户定制一些功能比如免登录服务,服务器发送的响应报文的首部有一个set-cookie的字段,客户端在拿到这个响应后把这个字段内容保存到浏览器中,在客户端再次发送请求同类资源的时候,就会把ookie一起携带在请求中,发送到服务端 Session是保存在服务器中的信息载体,存储在浏览器的cookie并不安全,session则相对于比较安全,如果使用session维护用户登录状态:
如果禁用了Cookie可以使用URL重写,把sessionID作为URL的参数进行传递 HTTP1.1和1.0的主要区别长链接和短连接,http1.1增加了一些错误状态码 请求转发和重定向的区别请求转发:
重定向:
如何选择:一般选择转发,重定向有以下两种场景
URL和URI的区别URI像是一个身份证,是资源的标志符 URL像是一个地址,是资源的定位符,一个URL可以确定哪个主机的哪个项目下的哪个资源,URL是URI的子集,但是在万维网中URL也充当了URI的角色,只要知道了URL就知道了头衔+定位 HTTP和HTTPS的区别端口来讲:http默认为80,HTTPS为443 安全性来讲:后者高于前者.前者运行于TCP之上,所有的传输都是明文传输,客户端和服务端无法验证对方的身份,后者在中间加了一层SSL协议,SSL协议是运行于TCP之上的,所有的传输内容都经过了加密,这个加密其实是对称加密,而对称密匙是用服务器方的公钥进行了非对称加密传输过去的
?SSL过程SSL是安全套接字,是用于加密和验证应用程序和web服务器之间发送数据的协议,用于提供身份验证,HTTPS里的S指的就是SSL 简略过程如下:
怎么保证不被篡改?可以把摘要(md5)单独加密发过去,解密的时候对内容进行md5算法,和摘要对比,如果不一样了就是被篡改了 怎么保证公钥就是服务器的公钥?服务器事先已经向ca申请,ca是大家都信任的机构,ca在判明申请者的身份之后,会用自己的私钥对服务齐全的公开密匙进行加密,也就是做了一个数字签名,然后把这个经过数字签名之后的证书一起发给客户端,客户端拿到之后用数字签名进行验证,如果验证过了,就可以开始通信了 单独的非对称加密的弱点在于公钥可能被伪造,比如a和b通信,中间隔了一个c,这个c把a,b通信时的公钥全部都换了,这样也是没法验证身份的,那只要保证公钥不被伪造就可以了,ca的公钥大家都相信,甚至已经内置在浏览器里,不会被伪造,都相信ca所以只要数字签名认证通过了,就可以完全信任服务器了 Get和Post的区别get把请求的数据放在url上,以?分割和传输数据,参数之间以&相连,post把数据放在请求体中 get提交数据最大为2k(受限于浏览器),post理论没有限制 get产生一个tcp数据包,浏览器会把http header和data一并发送出去,服务器响应200返回数据,post产生两个tcp数据包,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200返回数据 get请求是幂等的,会被浏览器主动缓存,post不是幂等的,不会被浏览器主动缓存,除非手动设置 TCP三次握手
过程:
为什么要三次握手?
如果1,2,3次握手分别丢包?
TCP四次挥手?过程:
四次挥手的原因服务端在收到客户端的fin包之后,表示客户端不再发送数据了,但客户端还可以接收数据,而服务端也不是说数据都发完了,所以服务端可以立即关闭,也可以再发送一段时间数据之后再发送给FIN报文给客户端表示同一关闭,因此服务端的ACK和FIn标志位会分开发送 为什么要等待2MSL?确保最后一个报文能到达,如果服务器没收到来自客户端的ack报文,就会重写发送fin报文到客户端,客户端等待一段时间就是为了处理这种延迟的情况,等待时间为2MSL是为了让本连接持续时间的所有报文从网络中消失,使得下一个连接不会出现旧报文 挥手四次分别丢包?
TCP如何保证可靠传输可靠传输的基础是滑动窗口协议,配合着一些其他的控制来使得整个过程可靠,这些控制分为三组去解释:基本控制,发送端的控制,接收端的控制 滑动窗口:
基本的控制:
发送端的控制:
接收端的控制:
UDP协议讲一讲UDP协议是面向无连接的,尽最大可能交付,没有拥塞控制,直接把应用层的报文拿下来,然后价格UDP首部就算结束了,支持一对一,一对多,多对一,多对多的通信 TCP协议是面向连接的,提供可靠交付,有超时重传,流量控制,拥塞控制等保证可靠连接的一些机制,把应用层传下来的数据看成字节流,拆分成最适合传输的大小,封装成报文段来传输,每条TCP连接只能是一对一的 如何设计一个可靠的UDP协议?数据完整性->添加验证CRC(循环冗余检查)字段 乱序到达->加上一个数据包序列号seq 丢包->确认和重传机制 TCP和UDP的应用场景实时音视频使用UDP,一方面它常常设计到网络穿透,另一方面它不需要重传,重传会导致延迟和不同步,如果某一帧重传导致了0.5秒后才到达,那么整个音频就延迟了0.5秒 如果出现卡顿掉帧就是UDP的结果,如果是TCP协议,直接是视频黑掉,然后重新又有了 讲讲ARP协议提供了由目的IP地址得到MAC地址的功能 在同一个局域网中:主机a想给b发信息,会先在自己的ARP缓存表中找到是否有对应主机的ip地址,如果没有,则会广播ARP请求分组,主机b和主机a在同一个局域网,则主机b收到ARP分组的时候,会回复一个ARP响应分组,里面带有自己的MAC地址 不在同一个局域网:主机A先把子网掩码和目的IP进行相与操作,发现不在一个网段,那么下一跳就去找默认的网关,如果ARP缓存没有默认网关的MAC地址,也需要先发一个ARP请求分组,等默认网关给他回一个ARP响应分组后,就拿到了网关的MAC地址 讲讲ICMP协议?本质还是个IP数据报,是网络层的协议,IP数据报的数据段使用ICMP报文代替了而已 其作用是提高交付成功机会,让网络节点能报告差错情况和异常情况 MAC地址是什么?为什么有了MAC还需要IP地址呢?MAC又称物理地址,物理地址是数据链路层和物理层使用的地址,IP地址是网络层及以上层使用的地址 需要使用两个地址是由组网方式决定的,如今比较流行的Internet方式是把主机通过局域网组织在一起,然后通过交换机和Internet相连接,由于IP只是逻辑上标识,任何人都可以随意修改,因此不能用来标识用户,MAC地址则是固化在网卡里的,理论上讲无法冒名顶替;如果只有MAC地址的话,只有在同一网络区域内才可以进行数据传输;类似的IP地址相当于包裹地址,MAC地址相当于收件人信息,如果只知道收件人信息,除非送快递的人认识你,不然就收不到 什么是子网掩码?子网掩码用来表明一个IP地址所标示的主机是处于哪个子网中的,子网掩码不能单独存在,必须结合IP地址一起使用,它只有一个作用就是将某个IP地址划分成网络地址和主机地址两部分;子网掩码和具体的IP做位与运算后会将IP地址的后8位淹没掉(主机码),如果经过掩码处理后网络码一致,就可以进行正常通信,否则不能 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 6:29:32- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |