- TCP三次握手
首先,是客户端想和服务端建立连接,客户端需要确认自己的发送和接收以及服务器的发送和接收是否正常,所以客户端先给服务器端发送一个报文,该报文中标志位SYN为1,seq为随机值,当服务器收到该报文的时候就知道客户端想要建立连接,他能够确认客户端的发送正常,自己的接收正常,然后服务器端还无法确认客户端的接收以及服务器端的发送是否正常,然后服务器端给客户端回复一个标志位SYN和ACK都为1、ack为seq加1、seq为随机值的报文,当客户端接收到该报文的时候就可以确定自己的接收、发送都正常,服务器端的接收、发送也都正常,但此时服务器端还无法确认自己的发送以及客户端的接收是否正常,所以需要客户端再给服务器端发送一个ACK为1、ack为seq加1的报文,当服务器端收到以后就可以确认自己的发送、接收以及客户端的发送、接收都正常,此时完成TCP三次握手,客户端和服务器端可以开始传输数据了。
- UDP
- UDP的特点:
- 面向非连接;
- 不维护连接状态,支持同时向多个客户端传输相同的数据;
- 数据包报头只有8个字节,额外开销小;
- 吞吐量只受限于数据生成速率、传输速率、机器性能;
- 尽最大努力交付,不保证可靠交付,不需要维持复杂的链接状态表;
- 面向报文,不对应用程序提交的报文信息进行拆分或者合并;
- TCP和UDP区别:
- 面向连接vs无连接:TCP要经过三次握手进行连接,而UDP是面向非连接,可以从一个点向多个点传送信息;
- 可靠性:TCP利用握手确认和重传机制提供了可靠性保证,而UDP有可能丢失,不知道有没有被接收;
- 有序性:TCP利用序列号排序保证了消息包的顺序交付,UDP不能保证有序性;
- 速度:TCP要创建连接保证消息的可靠性和有序性(错误检测和流量控制)等,需要做额外的许多事情,速度较慢。UDP速度快,可用于电视媒体、新闻广播、在线多人游戏等;
- 量级:TCP:重量级;UDP:轻量级;体现在原数据的头大小,TCP:20个字节,UDP:8个字节;
TCP应用:
当对网络通讯质量要求高时,比如HTTP、HTTPS、FTP等传输文件的协议,POP、SMTP等邮件传输的协议。
UDP应用:
当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快,这时就可以使用UDP。 UDP的应用有:QQ语音、QQ视频等
UDP视频通话应用:
QQ语音和QQ视频,UDP传输速度比TCP快,所以视频延迟较小。UDP是不可靠传输,如果数据丢失的话,不会有重传。一般来说图像稍微模糊一点,声音稍微不清晰一点,人是可以接受的,但如果在几秒钟以后再出现之前丢失的画面和声音,是不能接受的。
QQ的服务器要同时容纳非常多的并发连接,所以服务器端只有采用UDP才能保证超大规模的服务。
UDP包能够穿透大部分的代理服务器,
- TCP的滑动窗口(维持发送方/接收方缓冲区)
- RTT和RTO:
- RTT:发送一个数据包到收到对应的ACK,所花费的时间;
- RTO:重传时间间隔,是本次发送当前数据包所预估的超时时间,有特定的算法去预计,RTO不是固定写死的配置,而是RTT计算出来的;
- 使用滑动窗口做流量控制与乱序重排:
- 保证TCP的可靠性;
- 保证TCP的流控特性;
- HTTP
- 超文本传输协议HTTP主要特点:
- 支持客户/服务器模式;
- 简单快速;
- 灵活;
- 无连接;
- 无状态;
HTTP和https区别
- http连接简单无状态。https协议是由ssl+http协议构建的可进行加密传输、身份认证、报文的完整性的网络协议,比http协议安全。采用混合加密的算法
- https协议需要到申请证书,证书需要一定费用
- http超文本传输是明文传输,https是具有ssl加密传输协议
- http使用80端口,https使用443端口
SSL原理
HTTPS协议就,是HTTP的通信接口采用SSL协议来实现。在http基础上增加了通信加密、证书认证、完整性保护。
HTTPS加密过程及原理
步骤1:向服务器发起请求。
步骤2-3:取出公有密钥及证书并发送给客户端。
步骤4:客户端判断公有密钥是否有效,无效则显示警告。有效则生成一个随机数串,并以此生成客户端的共享密钥。
步骤5:用步骤3得到的公有密钥对该随机数串加密,发送到服务器。
步骤6:服务器得到加密报文,用私有密钥解密报文,得到随机数串,并以此生成服务器端的共享密钥。此时客户端和服务端拥有相同的共享密钥,可以用该共享密钥进行安全通信。
步骤7-8:服务器对响应进行加密,客户端对报文进行解密。
选择哪个HTTP、HTTPS
如果通信中传输的是非敏感的信息,则会较多地选择HTTP协议。而当通信过程中会涉及个人隐私或其他安全信息时,则会选择用HTTPS。当然,访问量也是考虑的因素之一,如果访问量很大,而每个报文都进行加密解密,也会给服务器带来很大的负担。
网络7层协议后面黄色的是协议
7 应用层 :这个数据是为那个应用提供的?文件传输,电子邮件,文件服务
TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet
6 表示层:数据格式化,代码转换,数据加密
5 会话层:解除或建立与别的接点的联系,没有协议
4 传输层 :保证可靠性,有出错重传机制,本层有TCP和UDP协议,TCP是基于连接的
3 网络层 :经过多个路由器传递,(为数据包选择IP,ICMP,RIP,OSPF,BGP,IGMP)
2 数据链路层 :传输有地址的帧,有奇偶校验等错误检测功能CSLIP,SLIP,PPP,ARP,RARP,MTU
1 物理层 :不可靠;以二进制数据形式在物理媒介上传输数据;ISO2110,IEEE802,IEEE802.2