1、TCP与UDP的区别
UDP | TCP | |
是否连接 | 无连接 | 面向连接 |
是否可靠 | 不可靠传输,不适用流量控制与拥塞控制 | 可靠传输,使用流量控制与拥塞控制 |
连接对象个数 | 支持一对一,一对多,多对一,多对多交互通信 | 只支持点对点通信 |
传输方式 | 面向报文 | 面向字节流 |
首部开销 | 首部开销8字节 | 首部最小20,最大60字节 |
应用场景 | 适用于实时应用,IP电话,直播,视频会议,实时游戏,多媒体数据流等 | 要求可靠传输的应用,文本传输,客户端应用 |
2、TCP三次握手
(1)客户端向服务端发送请求连接报文:标记位为SYN,表示请求建立新连接,序号为Seq=x,x一般为1;随后客户端进入到SYN-SENT状态
(2)服务器端接受到客户端的请求连接报文,结束其当前的LISTEN状态,返回一段TCP报文:
标记位为SYN与ACK,表示服务器端可以正常收到客户端发送的数据,并同意建立连接;
序号为Seq = y;确认号为Ack = x+1;表示收到客户端序号Seq,并将其值+1作为自己确认号Seq的值,同时服务器端进入到SYN-RCVD阶段
(3)客户端收到服务器端的确认收到数据的TCP报文,确定客户端到服务器端数据传输是正确的,结束SYN-SENT状态,返回最后一段TCP报文,其中:
标志位ACK;确认收到服务器端连接信号;序号为Seq = x+1;表示收到服务器的确认号,并将其值作为自己的序号值;
确认号Ack = y+1;表示收到服务器序号,并将其加+1作为自己的确认号
客户端进入ESTABLISHED阶段
服务器收到来自客户端的“确认收到服务器数据”的TCP报文之后,明确了从服务器到客户端的数据传输是正常的。结束SYN-SENT阶段,进入ESTABLISHED阶段。
在客户端与服务器端传输的TCP报文中,双方的确认号Ack和序号Seq的值,都是在彼此Ack和Seq值的基础上进行计算的,这样做保证了TCP报文传输的连贯性。一旦出现某一方发出的TCP报文丢失,便无法继续"握手",以此确保了"三次握手"的顺利完成。
此后客户端和服务器端进行正常的数据传输。这就是“三次握手”的过程。
3 http与https的区别
(1)https协议需要用到CA证书,免费证书较少
(2)http超文本传输协议信息是明文传输,https则是具有安全性的ssl/tls加密传输协议
(3)采用不同的连接方式,端口不同,http为80,https为443
(4)http连接无状态,https为加密传输,身份认证的网络协议,比http安全