TCP/IP速记
网络协议
计算机网络的核心就是网络协议。网络协议是计算机网络中为了数据交换而建立的规则。
OSI七层模型和TCP/IP五层模型
在实际运用中,最终是TCP得到了广泛的应用。
OSI是一种设计得非常详细的协议,而问题就是出在详细上;因为实际的情况往往比想象中的更加多变和灵活,所以OSI的详细本该成为它的优势,但却成为了其限制。
王老师的思想迁移:不光是这种协议的发展规律,生活中很多事情都是这样,不能等完完全全准备好了再去做,而是在做的过程中不断改进,不断适应,就TCP/IP一样,虽然更加简单,但却能经受实际的考验。
TCP/IP五层模型
- 应用层(HTTP)
- 传输层(TCP,UDP)
- 网络层(IP)
- 数据链路层
- 物理层
TCP的三次握手和四次挥手
三次握手进行连接
SYN:标志位,为1时表示请求连接
ACK:标志位,为1时表示确认请求
第一次握手:客户端向服务端发送SYN为1的请求报文
第二次握手:服务端向客户端发送ACK消息确认【此时客户端知道自己可以发送消息给服务端,而且服务端也可以发送消息给自己;但服务端只知道客户端的消息可以传过来,但不知道自己的消息能否传过去】
第三次握手:客户端向服务端发送ACK消息确认【目的:让服务端知道自己发送的消息客户端可以接收到】
四次挥手断开连接
FIN:标志位,为1时表示请求断开连接
第一次挥手:客户端向服务端发送FIN=1的报文
第二次挥手:此时服务端可能会有未发出的消息,所以先给客户端一个ACK确认消息,表示收到了客户端的请求
第三次挥手:此时服务端已经发送了所有的消息,然后向客户端发送一个FIN=1的报文,表示可以断开请求了
第四次挥手:客户端收到请求后,给服务端发送ACK确认消息
TCP连接的特点
- TCP是一种有连接,安全可靠的协议
- 点对点的通信模式
- 在传输可靠上的特性:丢包重发,流量控制
TCP是如何保证安全可靠的
宏观上来看,三次握手和四次挥手的这种有连接的机制为TCP的安全提供了基础。
更加微观的看
- 校验和(TCP头部,数据,尾部)
- 应答机制:不管是对于客户端还是服务端,每发送一个消息都需要返回一个确认消息,不然就会重发
- 超时重传:发送一个包和接受应答包这个时间如果过长,就会重新发送
- 拥塞控制:发出少量数据来测试网络拥堵情况,然后决定按多大的速度传送数据
UDP连接的特点
-
UDP是一种无连接,不可靠的协议
-
支持一对多,多对多的通信模式
TCP和UDP的区别
-
是否有连接
TCP是有连接的,而UDP是无连接的。连接决定是否安全可靠。
-
传输效率
UDP首部字节为8个,而TCP首部字节20个。所以UDP的传输效率更高。
-
通信模式
TCP支持点对点,UDP支持一对多,多对多
TCP和UDP首部的区别
- UDP首部只有8个字节:源端口,目的端口,校验和
- TCP超过20个字节:源端口,目的端口,校验和,SYN,ACK,FIN
HTTP请求的过程和原理
- 发起一个请求后,通过DNS将URL中的域名解析为IP地址
- 然后根据IP地址,建立与服务端的TCP连接(三次握手)
- 断开连接:四次挥手