计算机网络知识

GET和POST的区别

  1. (使用场景及缓存)get一般用于请求数据,不会对服务器数据造成影响,且一般会对get请求进行缓存
    post一般用于更新、添加数据,会对服务器数据造成影响,一般不会对post请求进行缓存
  2. (参数格式和长度及安全性)get的请求参数放入到url中向服务器发送,由于浏览器对url长度的限制,会影响get请求数据的长度;因为url会被保留在历史记录中,所以不太安全。
    post的请求参数一般在报文实体部分向服务器发送数据,相比于get更安全,且没有长度的限制,支持更多的数据类型。

HTTP协议和HTTPS协议的区别

  • HTTP协议是超文本传输协议,信息是明文传输,因此不适合传输一些敏感信息,安全性差;HTTPS协议是具有安全性的SSL加密传输协议,需要CA证书,费用比较高,安全性较高
  • 端口不同。HTTP协议端口是80,HTTPS协议端口是443
  • 连接方式不同。HTTP协议连接是无状态的(无状态:数据包的发送、传输和接收都是相互独立的);HTTPS协议是有SSL和HTTP协议构建的可进行加密传输、身份认证的网络协议

HTTP协议的优缺点

HTTP协议是超文本传输协议,默认端口号为80,它使用了TCP作为传输层协议,保证数据传输的可靠性。

  • 优点:
  1. 是无连接(限制每次连接只处理一个请求)。服务器处理完用户请求并收到客户应答后,断开连接,这样可以 节省传输的时间
  2. 简单快速。客户向服务器请求服务时,只需要传递请求方法和路径,因为HTTP协议简单,所以HTTP服务器的程序规模小,因此通信速度很快
  3. HTTP允许传递任意数据类型的数据对象。使用Content-Type标记正在传输的数据类型。
  • 缺点:
  1. 无状态的。服务其不会保存任务关于客户的信息,每次请求都需要重传,这可能导致每次连接传送的数据量增大。
  2. 不安全。
    a. 明文传输。报文使用的是文本形式,直接暴露给外界,内容容易被窃听
    b. 无法证明报文的完整性,接收的报文可能被篡改
    c. 不验证通信方身份,可能遭遇伪装

三次握手(一个TCP连接)

  • 作用:为了确认双方的接收能力和发送能力是否正常,指定自己的初始化序列号为可靠性传输做准备。
  • 实质:连接服务器端指定端口,建立TCP连接,同步连接双方的序列号和确认号,交换TCP窗口大小信息。
  • 具体握手过程及双方的所处的状态
    (客户端、服务器端都处于CLOSED关闭状态,客户端主动打开,服务器端被动打开。之后服务器端创建传输控制模块TCB,进入LISTEN收听状态)
    第一次握手:客户端向服务器发送一个SYN=1,连接请求报文段和一个随机序号seq=x。
    (客户端处于SYN-SEND同步已发送状态)
    第二次握手:服务端接收到请求后向客户端发送一个SYN=1 ACK=1 ack=x+1报文段,确认连接请求,并向服务端发送一个随机序号seq=y。
    (服务端处于SYN-RCVD同步收到状态)
    第三次握手:客户端接收服务器的确认应答后,进入连接建立状态(ESTABLISHED),同时向服务器发送一个ACK=1 ack=y+1 seq=x+1确认报文段;服务器接收到确认后,也进入连接建立状态(ESTABLISHED),此时双方建立了连接。
    在这里插入图片描述

ACK为确认报文段,ack为确认号
第一次握手:服务器端知道客户端的发送能力和自己的接收能力
第二次握手:客户端知道自己和服务器端的发送能力和接收能力(服务端不知道自己的发送能力和客户端的接收能力)
第三次握手:服务器端知道自己的发送接收能力和客户端的发送接收能力

TCP四次挥手

(客户端、服务器端都处于ESTABLISHED状态,)
第一次挥手:客户端向服务器端发送连接释放报文段seq=u FIN=1,并停止再发送数据,主动关闭TCP连接,客户端进入FIN-WAIT-1终止等待1状态。
第二次挥手:服务器端接收连接释放报文后即发出确认ACK=1 ack=u+1 seq=v,并进入CLOSE-WAIT关闭等待状态。这时候TCP服务器进程应通知高层应用进程,TCP连接处于半关闭状态,即客户端已经没有数据要发送了,但服务器若仍发送数据,客户端仍要接收。客户端收到服务器的确认后,进入FIN-WAIT-2终止等待2状态,等待服务器发送释放连接释放报文段。
第三次挥手:服务器没有数据发送,服务器应用进程通知TCP释放连接,服务器发出连接释放报文段FIN=1 ACK=1 ack=u+1 seq=w,服务器进入LAST-ACK最后确认状态
第四次挥手:客户端接收到服务器端释放报文段后,发出报文确认ACK=1 ack=w+1 seq=u+1,然后进入TIME-WAIT时间等待状态,这时候TCP连接还未释放,必须经过时间等待计时器2MSL后,客户端才进入CLOSED状态。服务器端一接收到客户端确认报文后马上进入CLOSED状态。
在这里插入图片描述

为什么客户端在TIME-WAIT状态为什么要等待2MSL?
第一:保证客户端发送的最后一个ACK确认报文段能够到达服务器端。(ACK报文段可能丢失,2MSL能够确保收到服务器端超时重传的FIN+ACK报文段)
第二:防止已失效的连接请求报文段出现在本连接请求。客户端发送确认报文经过2MSL,就可以使本地连接持续的时间内所产生的所以报文端都从网络上消失。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值