HTTPS和HTTP的区别
HTTP(超文本传输协议):
明文传输;连接简单,是无状态的。缓存高效;默认端口为 80。
HTTPS(具有安全性的 ssl 加密传输协议):
ssl 加密传输协议;握手阶段比较费时、耗电;缓存不如 http 高效;默认端口为 443;
Https 协议需要 ca 证书,费用和功能成正比; SSL 证书需要绑定 IP,不能再同一个 IP 上绑定多个域名。
TCP/IP 协议栈
TCP/IP 协议栈是一系列网络协议的总和,是构成网络通信的核心骨架。
TCP/IP 协议采用4层结构,分别是应用层、传输层、网络层和链路层。
每一层都由特定的协议与对方进行通信,而协议之间的通信最终都要转化为 0 和 1 的电信号,通过物理介质进行传输才能到达对方的电脑,因此物理介质是网络通信的基石。
-
链路层:对0和1进行分组,定义数据帧,确认主机的物理地址,传输数据;
-
网络层:定义IP地址,确认主机所在的网络位置,并通过IP进行MAC寻址,对外网数据包进行路由转发;
-
传输层:定义端口,确认主机上应用程序的身份,并将数据包交给对应的应用程序;
-
应用层:定义数据格式,并按照对应的格式解读数据。
TCP和UDP的区别
- TCP是面向链接的,仅支持单播传输。TCP的三次握手保证了连接的可靠性;
- UDP 是面向无连接的,提供了单播,多播,广播的功能。
- UDP是无连接的、不可靠的一种数据传输协议,首先不可靠性体现在无连接上,通信都不需要建立连接,对接收到的数据也不发送确认信号,发送端不知道数据是否会正确接收。
- UDP的头部开销比TCP的更小,数据传输速率更高,实时性更好。
TCP的三次握手
1、建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号。
2、服务器收到syn包并确认客户的SYN(ack=j+1),同时也发送一个自己的SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
3、客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1);此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。
TCP的四次挥手
1、客户端进程发出连接释放报文,并且停止发送数据;客户端进入FIN-WAIT-1(终止等待1)状态。
2、服务器收到连接释放报文,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT(关闭等待)状态。
3、客户端收到服务器的确认请求后,此时,客户端就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文。
4、服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN=1,ack=u+1,由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为seq=w,此时,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。
5、客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态。注意此时TCP连接还没有释放,必须经过2∗∗MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。
6、服务器只要收到了客户端发出的确认,立即进入CLOSED状态。
TCP/IP / 如何保证数据包传输的有序可靠?
对字节流分段并进行编号然后通过 ACK 回复和超时重发这两个机制来保证
OSI的体系结构
数据链路层、网络层(IP)、链路层(tcp、udp)处于内核态;
应用层(DNS、ftp、https协议)处于用户区
- 应用层(数据):确定进程之间通信的性质以满足用户需要以及提供网络与用户应用
- 表示层(数据):主要解决用户信息的语法表示问题,如加密解密
- 会话层(数据):提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制,如服务器验证用户登录便是由会话层完成的
- 传输层(段):实现网络中不同主机上用户进程之间的数据通信,可靠与不可靠的传输,传输层的错误检测,流量控制
- 网络层(包):提供逻辑地址(IP)、选路、数据从源端到目的端的传输
- 数据链路层(帧):将上层数据封装成帧,用MAC地址访问媒介,错误检测与修正
- 物理层(比特流):设备之间的比特流的传输,物理接口,电气特性等