计算机网路协定
概览:
- TCP/IP四层模型
- HTTP三次握手和四次挥手
- TCP和UDP ;UDP丢包起因
- HTTP0.9 / HTTP1.0 / HTTP1.1 / HTTP2.0之间的区别
- HTTPS协定,工作原理以及加密算法。
- 浏览器从申请到响应,两头产生了什么?
1、TCP/IP的四层模型
数据从网络中一个终端上的应用程序传送到另外一个终端的应用程序,两头须要经验很多过程,有多方参加对数据进行层层封装、转发。咱们把这个流程在逻辑上进行分成层,每一层依据本层的规章制度(协定)各司其职。
TCP/IP协定可分为应用层、运输层、网际层、网络接口层。
应用层:与网络相干的程序通过网络与其余程序通信应用的数据格式标准。
- HTTP(80端口),次要用于一般浏览。
- HTTPS(443端口),HTTP协定的平安版本。
- FTP(20和21端口),用于文件传输。
- POP3(110端口),收邮件用。
- SMTP(25端口),用来发送电子邮件。
- SSH(22端口),用于加密平安登陆用。
- DHCP(67端口,动静主机配置协定),动静配置IP地址。
- DNS,用于实现地址查找,邮件转发等工作(运行在TCP和UDP协定上)。
- SNMP,用于网络信息的收集和网络管理。
- ARP,用于动静解析以太网硬件的地址。
传输层:解决诸如端到端可靠性(数据是否曾经达到目的地)和保证数据依照正确的程序达到这样的问题。
TCP/UDP协定
网际层:解决在一个繁多网络上传输数据包的问题。
IP协定
网络接口层:它是数据包从一个设施的网络层传输到另外一个设施的网络层遵循的标准。
比方以太网协定、Wi-Fi协定。
2、HTTP三次握手和四次挥手
- 三次握手
第一次握手:客户端发送第一个包,其中SYN标记位为1, ACK=0,发送顺序号seq=x(随机int)。客户端进入SYN发送状态,期待服务器确认。
第二次握手:服务器收到这个包后发送第二个包,其中包SYN、ACK标记位为1,发送顺序号seq=Y(随机int),接管顺序号ack=x+1,此时服务器进入SYN接管状态。
第三次握手:客户端收到服务器传来的包后,向服务器发送第三个包,SYN=0, ACK=1,接管顺序号ack = Y+1,发送顺序号seq=X+1。此包发送结束,客户端和服务器进入ESTABLISHED建设胜利状态,实现三次握手。
为什么要三次握手?为了避免服务器端开启一些无用的连贯减少服务器开销以及避免已生效的连贯申请报文段忽然又传送到了服务端,因此产生谬误。
因为网络传输是有延时的,在传输的过程中,例如客户端发动了SYN=1创立连贯的申请(第一次握手),如果服务器端就间接创立了这个连贯并返回蕴含SYN、ACK和Seq等内容的数据包给客户端,这个数据包因为网络传输的起因失落了。
客户端认为未胜利建设连贯,不会传输报文和敞开连贯申请,服务器端的端口就始终开着,等到客户端因超时从新发出请求时,服务器就会从新开启一个端口连贯,造成服务器端开销的重大节约。
- 四次挥手
第一次挥手: 被动敞开方(客户端)发送第一个包,其中FIN标记位为1,发送顺序号seq为u。
第二次挥手: 被动敞开方(服务器)收到FIN包后发送第二个包,其中发送顺序号seq为v,接管顺序号ack为u+1。
第三次挥手: 被动敞开方(服务器)再发送第三个包,其中FIN标记位为1,发送顺序号seq为w,接管顺序号ack为u+1。
第四次挥手: 被动敞开方(客户端)发送第四个包,其中发送顺序号为u+1,接管顺序号为w+1。至此,实现四次挥手
为什么要四次挥手:建设连贯时,被动方服务器端完结CLOSED阶段进入“握手”阶段并不需要任何筹备,能够间接返回SYN和ACK报文,开始建设连贯。开释连贯时,被动方服务器,忽然收到被动方客户端开释连贯的申请时并不能立刻开释连贯,因为还有必要的数据须要解决,所以服务器先返回ACK确认收到报文,通过CLOSE-WAIT阶段筹备好开释连贯之后,能力返回FIN开释连贯报文。
为什么要等2MSL:
如果客户端在2MSL内,再次收到了来自服务器端的FIN报文,阐明服务器端因为各种起因没有接管到客户端收回的ACK确认报文。客户端再次向服务器端收回ACK确认报文,计时器重置,从新开始2MSL的计时;若客户端在2MSL内没有再次收到来自服务器端的FIN报文,阐明服务器端失常接管了ACK确认报文,客户端能够进入CLOSED阶段,实现“四次挥手”。
3、TCP和UDP
TCP: 传输控制协议(Transmission Control Protocol)UDP: 用户数据报协定(User Datagram Protocol)
次要区别:
TCP | UDP | |
---|---|---|
是否连贯 | 面向连贯 | 无连贯 |
是否牢靠 | 牢靠 | 不牢靠 |
连贯对象个数 | 一对一 | 反对单播、多播、播送 |
传输方式 | 面向字节流 | 面向报文 |
首部开销 | 20-60字节 | 8字节 |
程序复杂度 | 较简单 | 简略 |
系统资源开销 | 大 | 小 |
速度 | 慢 | 快 |
应用场景 | 实用于要求牢靠传输的利用,例如文件传输 | 实用于实时利用(IP电话、视频会议、直播等) |
UDP丢包次要起因
发送的包过大:
- 若比64K大会导致UDP协定sendto返回谬误。
- 若比MTU大,UDP包在接收端容易丢包,超过接收者缓存导致丢包。
发送包频率太块:
- 接收端来不及接管导致丢包。
- 发送端网卡解决不过去。在发送频率过快的时候思考sleep一下。
接收端解决工夫过长:
- 接收端两次调用recv办法接收数据之间发送过去的包可能失落。
- 解决:能够批改接收端,将包接管后存入一个缓冲区,而后迅速返回持续recv。
4、HTTP0.9 / HTTP1.0 / HTTP1.1 / HTTP2.0之间的区别
工夫 | 版本 | 性能和区别 |
---|---|---|
1991 | HTTP/0.9 | 仅反对GET申请,不反对申请头; 服务器发送完申请就敞开TCP连贯。 |
1996 | HTTP/1.0 | 默认短连贯(一次申请建设一次连贯,申请实现就断开连接); 反对GET、POST、HEAD申请; 减少了状态码(status code)、多字符集反对、多局部发送(multi-part type)、权限(authorization)、缓存(cache)、内容编码(content encoding)等。 |
1999 | HTTP/1.1 | 默认长连贯(一次TCP连贯能够屡次申请); 减少Host头,反对虚拟主机; 反对断点续传性能;新增五种申请办法OPTIONS、PUT、PATCH、DELETE、TRACE 、 CONNECT。 |
2015 | HTTP/2.0 | 多路复用(一次TCP连贯能够同时解决多个申请); 解析基于二进制,解析谬误少,更高效(HTTP/1.X解析基于文本); 服务器被动推送,容许服务器被动向客户端推送资源;<br/>报头压缩,升高开销。 |
5、HTTPS协定
HTTP协定通常承载于TCP协定之上,HTTPS协定是在HTTP和TCP之间增加了一个平安协定层(SSL或TSL)。
作用:
①对数据进行加密,并建设一个信息安全通道,保障传输过程中的数据安全;②对网站服务器进行身份认证,如果信息被篡改,通信单方能够立即发现;
③数据完整性校验
HTTPS和HTTP的区别
HTTP | HTTPS | |
---|---|---|
协定 | 明文传输协定 | 加密传输协定 |
证书 | 不必 | 须要SSL证书 |
规范端口 | 80 | 443 |
定位 | 基于应用层 | 基于传输层 |
安全性 | 平安 | 不平安 |
HTTPS加密形式:
- 对称加密(又称密钥加密)
加密和解密都是应用的同一个密钥。常见的对称加密算法有 DES、3DES 和 AES 等。
长处:算法公开、计算量小、加密速度快、加密效率高,适宜加密比拟大的数据。
毛病:交易单方须要应用雷同的密钥,也就无奈防止密钥的传输,而密钥在传输过程中无奈保障不被截获,因而对称加密的安全性得不到保障。每对用户每次应用对称加密算法时,都须要应用其他人不晓得的惟一密钥,这会使得发收信单方所领有的钥匙数量急剧增长,密钥治理成为单方的累赘。对称加密算法在分布式网络系统上应用较为艰难,次要是因为密钥治理艰难,应用老本较高。
- 非对称加密
加密应用的密钥和解密应用的密钥是不雷同的,别离称为:公钥、私钥;公钥和算法都是公开的,私钥是窃密的。常见的非对称加密技术是RSA技术。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥能力解密;如果用私钥对数据进行加密,那么只有用对应的公钥能力解密。
非对称加密算法实现机密信息替换的根本过程是:甲方生成一对密钥并将其中的一把作为公钥对外公开;失去该公钥的乙方应用公钥对机密信息进行加密后再发送给甲方;甲方再用本人保留的私钥对加密后的信息进行解密。
长处:算法公开,加密和解密应用不同的钥匙,私钥不须要通过网络进行传输,安全性很高。
毛病:计算量比拟大,加密和解密速度相比对称加密慢很多。
- 混合加密:
联合非对称加密和对称加密技术。客户端应用对称加密生成密钥对传输数据进行加密,而后应用非对称加密的公钥再对秘钥进行加密,所以网络上传输的数据是被秘钥加密的密文和用公钥加密后的机密秘钥,因而即便被黑客截取,因为没有私钥,无奈获取到加密明文的秘钥,便无奈获取到明文数据。
HTTPS的工作流程:
1、建设平安传输
在TCP连贯建设实现当前,在HTTPS协定中,客户端和服务端会初始化SSL层,也就是平安层。
2、SSL握手
在发送报文之前,客户端和服务端会进行一次SSL握手,在这个过程中次要实现以下工作:替换协定版本号——抉择一个两端都理解的明码——对两端的身份进行认证——生成长期会话密钥,以便加密信道(建设完平安通道后,传输报文时应用对称加密);
这里的认证是通过数字证书进行的,在客户端获取证书后,会采纳相应的算法对服务端的身份信息进行验证,包含:
日期检测:客户端会查看证书的有效期是否非法;
签名颁布者可信度检测:浏览器会附带一个签名颁发机构的授信列表,如果浏览器收到了地位的颁发机构签发的证书,那么它会显示一条正告信息;
签名检测:客户端对签名应用签名颁发机构的公开密钥,而后将其与校验码比拟,以便验证证书是否非法;
站点身份检测:客户端验证数字证书中的域名是否与服务端的域名匹配;
身份认证实现后,客户端与服务端进行明码协商,确定本次连贯采纳哪种加密算法进行通信。
3、开始通信
SSL握手实现后,就实现建设了HTTPS通道,客户端与服务端就会依据协商的加密算法进行通信。
[外链图片转存失败,源站可能有防盗链机制,倡议将图片保留下来间接上传(img-B5q64Alx-1596516899310)(C:Users安哥拉长毛兔AppDataRoamingTyporatypora-user-imagesimage-20200804113550456.png)]
6、在PC浏览器的地址栏输出URL,从发动申请到收到申请页面响应,产生了什么?
1、首先,在浏览器地址栏中输出url,先解析url,检测url地址是否非法
2、浏览器先查看浏览器缓存-零碎缓存-路由器缓存-ISP缓存,如果缓存中有,会间接在屏幕中显示页面内容。若没有,则跳到第三步操作。
浏览器缓存:浏览器会记录DNS一段时间,因而,只是第一个中央解析DNS申请;
操作系统缓存:如果在浏览器缓存中不蕴含这个记录,则会使零碎调用操作系统,获取操作系统的记录(保留最近的DNS查问缓存);
路由器缓存:如果上述两个步骤均不能胜利获取DNS记录,持续搜寻路由器缓存;
ISP缓存:若上述均失败,持续向ISP搜寻。
3、在发送http申请前,须要域名解析(DNS解析),解析获取相应的IP地址。
4、浏览器向服务器发动tcp连贯,与浏览器建设tcp三次握手。
5、握手胜利后,浏览器向服务器发送http申请,申请数据包。
6、服务器解决收到的申请,将数据返回至浏览器
7、浏览器收到HTTP响应
8、浏览器解码响应,如果响应能够缓存,则存入缓存。
9、 浏览器发送申请获取嵌入在HTML中的资源(html,css,javascript,图片,音乐......),对于未知类型,会弹出对话框。
10、 浏览器发送异步申请。
11、页面全副渲染完结。
送给20岁本人的一句话:无论贫困还是富裕,无论疾病或是衰弱,无论顺利或是得志,请你每天都要放弃学一点新货色的状态,至死方休,世间值得。