TCP/IP四层模型
网络接口层、网络层、传输层、应用层
各层功能和协议:
-
网络接口层:底层的bit流数据传输
-
网络层:路由寻址,IP协议(ipv4,ipv6)
-
传输层:设备之间的数据传输服务,TCP/UDP
-
应用层:应用之间的数据传输服务,HTTP协议,DNS域名解析
TCP/IP模型中最核心的协议
1.HTTP协议
http报文结构:请求行(GET/POST),消息头,消息体(GET请求消息体为空)
GET和POST的区别:
语义:GET通常用于获取资源,POST通常用于修改资源
格式:GET请求参数通常放在URL中,具有长度限制,Post请求的参数通常是放在请求体中,没有长度限制。
HTTP状态码:
1xx:请求处理中
2xx:成功
3xx:重定向
4xx:客户端错误
5xx:服务器错误
HTTP头中常见的字段:
Accept:客户端接受的类型
Accept-Encoding:客户端接受的编码
Content-Length:响应体的长度(字节)
Content-Type:请求或响应体的类型
Host:服务器域名
User-Agent:浏览器标识
HTTP和HTTPS的区别
端口: HTTP默认80,HTTPS默认443
HTTP传输内容明文,HTTPS传输内容加密,更加安全。
HTTP是无状态协议,如何保存用户状态?
服务端在用户登录时创建一个session,并向用户返回sessionID,用户在发送请求的时候携带这个sessionID就可以实现用户的状态跟踪了。
URI和URL的区别?
URI(Uniform Resource Identifier):统一资源标识符
URL(Uniform Resource Localtor):统一资源定位符
其中URI是通用的概念,用于标识任意类型的资源,无论是本地的还是网络的资源,或是书籍的ISBN号
而URL是URI的特殊类型,用于标识互联网资源,它的组成包括 协议、主机名、端口号、路径等。
DNS(Domain Name System,域名管理系统)的作用:解决域名和IP地址映射问题。
2.TCP协议
TCP和UDP的区别:TCP是面向连接的,可靠的传输协议,UDP是非连接的,不可靠的传输协议。UDP一般用于即时通信,如语音,视频等对准确性要求不高的情况。TCP用于传输文件等准确性要求高的情况。
TCP报文结构:
TCP三次握手和四次挥手:
- 三次握手:客户端向服务器发送请求 服务器回应客户端请求 客户端确认服务器响应
1.客户端 向 服务器发送同步码,进入同步发送状态
2.服务器收到后 向 客户端发送同步码和确认码 ,进入同步接收状态
3.客户端收到后 向 服务器发送一个确认数据包,服务端接受到客户端的数据包后进入连接建立状态。
经过三次握手后,TCP连接就建立成功,双方可以开始进行数据传输。
为什么要三次握手:
目的是建立可靠信道。经过三次握手,客户端和服务器都能够确保自己发送的消息对方能够收到。第一次和第二次握手,是客户端向服务发送消息并收到回应的过程,经过这一过程客户端确认了自己的发送的消息服务器可以收到;而第二次和第三次握手是服务器向客户端发送消息并收到回应的过程,这一过程服务器确保了自己发送的消息客户端可以收到。总之经过这一过程客户端和服务器都能确认自己发送的消息对方可以收到,从而可以进行数据传输。
第二次握手传回了ACK,为什么还有传回SYN:第二次传回SYN是服务器为了确保自己发送的消息客户能够收到,当第三次握手服务端收到的确认码是第二次的同步码+1时说明连接成功。
- 四次挥手:
第一次挥手:客户端 向 服务器发送 FIN码
第二次挥手:服务端收到FIN码 向 客户端发送ACK码
第三次挥手:服务端传完数据后 向 客户端发送FIN码
第四次挥手:客户端收到FIN码后 向 服务端发送ACK码,然后等2MSL,服务端收到ACK码后进入关闭状态
为什么要四次挥手:
确保数据发送完成并且双方都进入关闭状态。第一次和第二次挥手客户端确认服务端收到了关闭请求,第三次和第四次挥手服务器确认客户端收到了全部的数据,然后才可以关闭连接。
为什么不把服务发送的ACK码和SYN码合并,变成三次握手:
服务器发送的ACK码是表示自己收到了关闭请求,但是此时可以还有数据没有传输完成,在所有数据传输完成后,服务器需要再向客户端发送一个Fin码表示数据传输完成,保证数据的完整性。
为什么客户端第四次挥手后需要等待2*MSL(报文最大寿命):
客户端等待2个最大报文寿命后可以推断发送的ACK已经被成功接收。当在等待时收到了FIN码则重新发送ACK并再次等待2MSL,防止服务器没有收到ACK而不断发送FIN码。
TCP如何保证传输的可靠性?
1.对数据包进行排序和去重操作(防止数据包重复)
2.校验和字段校验数据包的正确性(防止数据包错误)
3.超时重传(防止数据包丢失)
4.流量控制和拥塞控制(控制网络中的数据量,减少数据丢失的可能性)
3.IP协议
IP 在 TCP/IP 参考模型中处于第三层,也就是网络层。
网络层的主要作用是:实现主机与主机之间的通信,也叫点对点(end to end)通信。
键入网址到网页显示,期间发送了什么?
1.浏览器先向DNS服务器发送请求,将域名解析为IP地址,
2.然后向服务器发送请求,服务器返回网页文件给浏览器,
3.浏览器解析html页面并显示