TCP 与 UDP 区别
TCP:面向连接的可靠传输、面向字节流,只能一对一
UDP:无连接,不保证可靠传输、面向报文,支持一对一,一对多,多对多
三次握手
TCP服务器进程先创建传输控制块TCB,时刻准备接受客户进程的连接请求,此时服务器就进入了 LISTEN 监听状态。
第一次握手:客户端向服务器发出连接请求报文,将标志位 SYN 置为 1,选择一个初始序列号 seq=x。SYN=1的报文段不能携带数据,但要消耗掉一个序号,此时TCP客户进程进入SYN-SENT(同步已发送)状态。
第二次握手:服务器收到请求报文后,如果同意连接,则会向客户端发出确认报文。确认报文中应该 ACK=1,SYN=1,确认号是ack=x+1,同时也要为自己初始化一个序列号 seq=y,此时,TCP服务器进程进入了 SYN-RCVD 同步收到状态。
第三次握手:TCP客户端收到确认后,还要向服务器给出确认。确认报文的ACK=1,ack=y+1,自己的序列号seq=x+1,此时,TCP连接建立。
第三次握手是可以携带数据的,前两次握手是不可以携带数据的
为什么要三次连接
如果只有两次连接,服务端可能会误认为一个延迟到达的旧SYN报文是一个新的连接请求。
四次挥手
客户端有个2MSL的等待时间是为了防止服务端的关闭请求丢失而重传。
为什么要有四次挥手?
客户端发送FIN关闭请求报文,仅仅是对客户端而言的,服务端还有可能要发数据。
HTTP常见的状态码
2xx:服务端成功处理客户端的请求
3xx:重定向,资源地址发生变动
- 301:永久重定向
- 302:临时重定向
- 304:可以继续使用缓存
4xx:客户端错误
- 400:笼统的错误
- 403:禁止访问资源
- 404:页面未找到
5xx:服务端错误
- 500:笼统的错误
- 502:网关错误或代理配置问题
- 504:网关超时,代理服务器负载过大
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1216271933@qq.com