①面向连接网络协议
②是指通信双方之间在进行通信之前要先建立连接。比如打电话,双方通话前要先建立连接。
③TCP协议是面向连接的,可靠的进程到进程通信的协议,TCP提供全双工服务,即数据可在同一时间双向传输,每一个TCP都有发送缓存和接收缓存,用来临时存储数据。
①面向无连接网络协议
②是指通信双方不需要事先建立一条通信线路,而是把每个带有目的地址的包送到网络线路上,由系统自主选定路线进行传输,比如:QQ发送消息
③UDP协议是无连接的、相对于TCP是不可靠的传输层协议,发送端不关心发送的数据是否到达目标主机、数据是否出错等,收到数据的主机也不会告诉发送方是否收到了数据,它的可靠性由上层协议来保障。所以它的传输数据的速度更快,效率更高。
TCP是面向连接的、可靠的进程到进程通信的协议
TCP提供全双工服务,即数据可在统一时间双向传输
TCP报文段
TCP将若干个字节构成一个分组,叫报文段
①源端口号:发送方进程的端口号
②目标端口号:接收端进程的端口号
解释:接收端受到数据段后,根据这个端口号来确定把数据送给哪个应用程序的进行
③序号:发送端为每个字节进行编号,便于接收端正确的重组
解释:当TCP从进程接收数据字节时,把它们分片成数据段存储在发送缓存中,并对每一个字节进行编号。当数据到达目的地后,接收端会按照这个序号将数据重新排列,保证数据的正确性。
④确认号:对发送端的确认信息
解释:接收端响应消息时,将会用它来告诉发送端这个序号之前的数据段都已经收到,如果确认号是x,就是表示前x-1个数据段都已经收到。
⑤首部长度:用它可以确定TCP首部数据结构的字节长度。一般情况下TCP首部是20字节,但是首部长度最大可以扩展为60字节
⑥控制位
URG:紧急位
解释:当URG=1时,标明紧急指针有效(要和紧急指针配合使用)。它告诉系统此报文段中有紧急数据,应尽快传送,把紧急数据插入到本报文段数据的最前面。相当于高优先级的数据。
ACK:确认位
解释:当ACK=1时,确认号字段才有效,当ACK=0时,确认号无效,TCP中规定,在连接建立之后所有的传送的报文段都必须把ACK置为1.
PSH:急迫位
解释:在两个应用进程通信时,发送端希望接收端能立即响应,这时,TCP就可以使用急迫位PSH操作,发送时将PSH=1,并立即创建一个报文段发送出去,接收方收到PSH=1,就尽快的交付接收应用进程,而不再等整个缓存都填满了再向上交付。
RST:重置位
解释:当RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立传输连接
SYN:同步位
解释:再连接建立时用来同步序号。当SYN=1时,且ACK=1时,表示这是一个连接请求报文段。对方若同意连接,则在响应的报文段中SYN=1和ACK=1,
FIN:断开位
解释:终止一个连接,当FIN=1时,表示此报文段发送方的数据以及发送完毕,并且要求释放传输连接。
⑦窗口大小:说明本地可接收数据段的数目。
解释:这个值大小是可以变的,当网络通畅时,接收端响应消息会将这个窗口值变大以加快传输速度,当网络不稳定时,减少这个值可保证网络数据的可靠传输。
⑧检验和:用来做差错校验
解释:字段检验的范围包括首部和数据这两个部分。数据段在发送时和到达目的地时,会进行校验和计算。若两次校验和一致,则说明数据基本正确,若不一致,则认为该数据已损坏,接收端将丢弃该数据
⑨紧急指针:配合URG使用,当URG=1有效
⑩选项:在TCP首部可以有多大40字节的可选信息。
TCP是面向连接的协议,就是说每次发送数据之前都要和对方建立一条可靠的连接,这个建立连接的过程分为3个步骤,就叫三次握手!
①当客户端向服务器发送请求连接的报文时
seq序列号=x(x位随机)
SYN=1(表示发送连接请求)
②服务端收到客户端发来的请求报文后,同意建立连接,则向客户端发送确认报文
seq序列号=y(这时服务器也会产生一个序列号y,和客户端的序号不相关)
ack确认号=x+1(这时序列号x+1,表示确认收到了客户端的请求)
ACK=1(表示这是条确认请求)
SYN=1(同时也发送一个建立连接的请求)
③客户端进程收到服务端进程的确认后,还要想服务端给出确认,然后连接成功建立
seq序列号=x+1(这时客户端的序号为1)
ack确认号=y+1(表示收到服务器的连接请求)
ACK=1(表示这时确认报文)
为什么不能是两次握手?
如果使用两次握手,客户端发送一个SYN数据包请求建立连接,服务器回复一个ACK 数据包确认收到请求并同意建立连接。在这种情况下,存在以下问题:
①没有确认客户端是否已经收到了服务器的响应: 虽然服务器知道客户端想要建立连接,但是它无法确定客户端是否成功接收到其确认信息。如果客户端没有收到这个确认信息,就会直等待并重新发送请求,导致资源浪费和连接不稳定。
②无法同步序列号: TCP连接需要双方同步初始序列号,以确保数据传输的顺序性和完整性两次握手不足以完成这一任务。
为什么不能是四次握手?
经过三次握手后,客户端和服务端都已确认对方能正确接收和发送数据,并且序列号也已经同步。再增加一次握手实际上并没有提供额外的信息或者提高可靠性,反而会延长连接建立的时间,降低效率。
①当客户端向服务器发送断开请求
FIN=1(表示申请断开请求)
ACK=1(表示确认可以断开)
②服务器收到断开请求后回复确认信息
ACK=1(表示确认可以断开)
③服务器再向客户端发送断开请求
FIN=1(表示申请断开请求)
ACK=1(表示确认可以断开)
④客户端收到断开请求后恢复确认信息
ACK=1(表示确认可以断开)
第一次挥手:客户端向服务端发送断开请求:FIN=1 ACK=1
表示客户端已经没有数据需要再发送给服务端了,此时进入到等待状态。
第二次挥手:服务端向客户端回复断开请求:ACK=1
表示服务端已经同意断开连接,但是不能立即断开,可能还有一些数据没有发送完成。
第三次挥手:服务端向客户端发送断开请求:FIN=1 ACK=1
表示服务端也没有数据向客户端进行发送了,申请断开连接,此时进入到等待状态。
第四次挥手:客户端向服务端回复断开请求:ACK=1
表示客户端同意服务端的断开请求,等待一段时间后,进行关闭。
以上:为什么第二次挥手和第三次挥手不进行重合,在三次握手中,这一步就进行了重合,那是因为在第二次挥手时,服务端必须要给客户端做出应答,不然客户端就会一直给服务端发出断开申请,但是做出回答之后又不能立即申请断开连接,因为可能服务端还有一些数据没有发完,所以需要等待一段时间后才能发出断开申请!
异常网络状况下(开始出现超时或丢包),TCP控制数据传输以保证其承诺的可靠服务。
TCP服务必须能够重传超时时间内未收到确认的TCP报文段。为此,TCP模块为每个TCP报文段都维护一个重传定时器,该定时器在TCP报文段第一次被发送时启动。如果超时时间内未收到接收方的应答,TCP模块将重传TCP报文段并重置定时器。至于下次重传的超时时间如何选择,以及最多执行多少次重传,就是TCP的重传策略。
UDP是无连接、快速、效率高的传输协议
UDP长度:用来支指UDP的总长度,为首部长度加上数据长度
校验和:用来完成对UDP数据的差错校验,它是UDP协议提供的唯一的可靠机制
远程管理协议,探测远端服务器端口是否打开
以下是等级权限:
①选择捕获接口。一般都是选择连接到Internet网络的接口,这样才可以捕获到与网络相关的数据。否则,捕获到的其它数据对自己也没有任何帮助。
②使用捕获过滤器。通过设置捕获过滤器,可以避免产生过大的捕获数据。这样用户在分析数据时,也不会受其它数据干扰。而且,还可以为用户节约大量的时间。
③使用显示过滤器。通常使用捕获过滤器过滤后的数据,往往还是很复杂。为了使过滤的数据包再更细致,此时使用显示过滤器进行过滤。