计网小记

  1. TCP 与 UDP 区别
  2. 三次握手
  3. 四次挥手
  4. HTTP常见的状态码

TCP 与 UDP 区别

TCP:面向连接的可靠传输、面向字节流,只能一对一

UDP:无连接,不保证可靠传输、面向报文,支持一对一,一对多,多对多

三次握手

image-20240316164317006

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报文是一个新的连接请求。

四次挥手

image-20240623090502431

客户端有个2MSL的等待时间是为了防止服务端的关闭请求丢失而重传。

为什么要有四次挥手?

客户端发送FIN关闭请求报文,仅仅是对客户端而言的,服务端还有可能要发数据。

HTTP常见的状态码

2xx:服务端成功处理客户端的请求

3xx:重定向,资源地址发生变动

  • 301:永久重定向
  • 302:临时重定向
  • 304:可以继续使用缓存

4xx:客户端错误

  • 400:笼统的错误
  • 403:禁止访问资源
  • 404:页面未找到

5xx:服务端错误

  • 500:笼统的错误
  • 502:网关错误或代理配置问题
  • 504:网关超时,代理服务器负载过大

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1216271933@qq.com

×

喜欢就点赞,疼爱就打赏