网络安全通讯HTTP,HTTPS,TCP,UDP协议等相关知识

1、TCP 和 UDP 区别
     TCP 基于连接,UDP 基于无连接。TCP 要求系统资源较多,UDP 较少。UDP 程序结构较简单。TCP 保证数据正确性,UDP 可能丢包。TCP 保证数据顺序,UDP 不保证。

TCP 长连接和短连接了

我们知道 TCP 在进行读写之前,server 与 client 之间必须提前建立一个连接。建立连接的过程,需要我们常说的三次握手,释放/关闭连接的话需要四次挥手。这个过程是比较消耗网络资源并且有时间延迟的。所谓,短连接说的就是 server 端 与 client 端建立连接之后,读写完成之后就关闭掉连接, 如果下一次再要互相发送消息,就要重新连接。短连接的优点很明显,就是管理和实现都比较简单,缺点也很明显,每一次的读写都要建立连接必然会带来大量网络资源的消耗,并且连接的建立也需要耗费时间。长连接说的就是 client server 双方建立连接之后,即使 client 与 server 完成一次读写,它们之间的连接并不会主动关闭,后续的读写操作会继续使用这个连接。长连接的可以省 去较多的 TCP 建立和关闭的操作,降低对网络资源的依赖,节约时间。对于频繁请求资源的客户来说,非常适用长连接。

2.TCP/IP协议涉及哪几层架构

应用层(HTTP),传输层(TCP),网络层(IP和端口),数据链路层(网络接口层),如果是HTTPS中间还有一个安全层(TLS).

3、TCP 连接 3步握手和4 步挥手的过程和必要性?

3步握手的过程和必要性:  

TCP协议目的是为了保证数据能在两端准确连续的流动,可以想象两个建立起 TCP通道的设备就如同接起了一根水管,数据就是水管中的水由一头流向另一 头。然而TCP为了能让一个设备连接多根“水管”,让一个设备能同时与多个设备 交互信息,它必须要保证不同水管之间不会产生串联或相互影响 为了确保数据能够正确分发,TCP用一种叫做TCB,也叫传输控制块的数据结构把发给不同设备的数据封装起来,我们可以把该结构看做是信封。一个TCB数据 块包含了数据发送双方对应的socket信息以及拥有装载数据的缓冲区。在两个设备要建立连接发送数据之前,双方都必须要做一些准备工作,分配内存建立起TCB数据块就是连接建立前必须要做的准备工作。

(0)准备工作

最开始的时候客户端和服务器都是处于 CLOSED 状态。主动打开连接的为客户端,被动打开连接的是服务器。TCP服务器进程先创建传输控制块TCB, 时刻准备接受客户进程的连接请求,此时服务器就进入了LISTEN (监听)状态
1
一次握手:
TCP 客户进程也是先创建传输控制块 TCB ,然后向服务器发出连接请求报文,这是报文首部中的同部位SYN=1,同时选择一个初始序列号 seq=x 。此时,TCP客户端进程进入了 SYN-SENT(同步已发送状态)状态。TCP 规定,SYN 报文段( SYN=1的报文段)不能携带数据,但需要消耗掉一
个序号。
2 )二次握手:
TCP 服务器收到请求报文后,如果同意连接,则发出确认报文。确认报文中应该 ACK=1, SYN=1,确认号是 ack=x+1,同时也要为自己初始化一个序列号 seq=y,此时,TCP 服务器进程进入 SYN-RCVD(同步收到)状态。这个报文 也不能携带数据,但是同样要消耗一个序号。ACK为 1 表示确认号有效,为 0 表示报文中不包含确认信息
3 )三次握手: TCP 客户进程收到确认后,还要向服务器给出确认。确认报文 ACK=1,ack=y+1,自己的序列号seq=x+1,此时, TCP 连接建立,客户端进入ESTABLISHED(已建立连接)状态。 TCP 规定, ACK 报文段可以携带数据,但 是如果不携带数据则不消耗序号。当服务器收到客户端的确认后也进入established 状态,此后双方就可以开始 通信了。
注: tcp 建立连接需要三次握手, SYN 是发送标志位, ACK 是确认标志位
.
为什么 TCP 客户端最后还要发送 次确认呢?
主要防止已经失效的连接请求报文突然又传送到了服务器,从而产生错误。 如果使用的是两次握手建立连接,假设有这样一种场景,客户端发送了第一 个请求连接并且没有丢失,只是因为在网络结点中滞留的时间太长了,由于TCP 的客户端迟迟没有收到确认报文,以为服务器没有收到,此时重新向服务器发 送这条报文,此后客户端和服务器经过两次握手完成连接,传输数据,然后关 闭连接。此时此前滞留的那一次请求连接,网络通畅了到达了服务器,这个报 文本该是失效的,但是,两次握手的机制将会让客户端和服务器再次建立连 接,这将导致不必要的错误和资源的浪费。如果采用的是三次握手,就算是那一次失效的报文传送过来了,服务端接受 到了那条失效报文并且回复了确认报文,但是客户端不会再次发出确认。由于 服务器收不到确认,就知道客户端并没有请求连接。
从另一个角度理解三次握手必要性
换个易于理解的视角来看为什么要3 次握手。客户端和服务端通信前要进行连接,3 次握手 的作用就是双方都能明确自己和对方的收、发能力是正常的。 第一次握手:客户端发送网络包,服务端收到了。这样服务端就能得出结论:客户端的发送能力、服务端的接收能力是正常的。第二次握手:服务端发包,客户端收到了。这样客户端就能得出结论:服务端的接收、发送能力,客户端的接收、发送能力是正常的。从客户端的视角来看,我接到了服务端发送过来的响应数据包,说明服务
端接收到了我在第一次握手时发送的网络包,并且成功发送了响应数据包,这就说明,服务端的接收、发送能力正常。而另一方面,我收到了服务端的响应数据包,说明我第一次发送的网络包 成功到达服务端,这样,我自己的发送和接收能力也是正常的。第三次握手:客户端发包,服务端收到了。这样服务端就能得出结论:客户端的接收、发送能力,服务端的发送、接收能力是正常的。 第一、二次握手 后,服务端并不知道客户端的接收能力以及自己的发送能力是否正常。而在第三次握手时,服务端收到了客户端对第二次握手作的回应。从服务端的角度,我在第二次握手时的响应数据发送出去了,客户端接收到了。所以,我的发送能力是正常的。而客户端的接收能力也是正常的。经历了上面的三次握手过程,客户端和服务端都确认了自己的接收、发送能力是正常的。之后就可以正常通信了。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值