计算机网络常见问题汇总

这篇博客详细介绍了TCP基础知识,包括三次握手、四次挥手、连接状态变迁以及TCP与UDP的区别。此外,还探讨了TCP的可靠性机制如滑动窗口、拥塞控制以及DDoS攻击和SQL注入等计算机安全问题。最后,涉及了应用层协议DNS的域名结构。
摘要由CSDN通过智能技术生成

1.TCP基础知识

TCP三次握手

过程

第一步:客户端的TCP向服务端的TCP发送一个TCP报文段,SYN=1。
第二步:当报文段到达服务端时,服务器从数据报TCP发送允许连接的报文段(SYNACK报文段)。SYN=1。
第三步:收到SYNACK报文段后,客户为该连接分配缓存和变量。客户端向服务端发送一个报文段,对服务器的允许连接进行确认。SYN=0。

为什么需要三次握手?

如果是一次握手,那么客户端连服务端有没有收到报文都不知道,不行。
如果是二次握手,那么当客户端与服务端建立连接之后,如果客户端之前丢失的报文再次传输到服务端,这时候服务端就会这个之前的报文进行确认,导致建立多个连接,发生错误。
如果是四次握手,那么服务端会在连接之后再发送一个确认报文,这个操作是可以的,但是没必要,浪费资源。

四次挥手

第一步:客户端发出一个关闭连接的报文段;
第二步:服务端接收到该报文之后,向客户端发送ACK报文段;
第三步:服务端发送自己的终止报文段;
第四步:客户端对服务器的终止报文段进行确认,两台主机的所有连接资源被释放。

为什么是四次挥手

因为客户端发送FIN报文,只是表示客户端想关闭连接,服务端可能还因为有数据在传输而不想关闭,等到服务端想关闭的时候自己再发送一个FIN报文去表示自己想关闭连接。

CLOSE_WAIT

CLOSE_WAIT是TCP四次挥手的过程中,客户端已经关闭了连接,而服务端还没有关闭连接之间的一段时间。需要CLOSE_WAIT的原因就是客户端关闭连接之后,而服务端可能还想继续传送数据,就还没发起关闭连接的请求。

TIME_WAIT

TIME_WAIT是TCP在四次挥手中客户端接受到服务端的请求终止报文(FIN),自己发送ACK之后的一个状态,等待若干时间后再把连接关闭。
需要等待的原因有:
1.当客户端收到服务端的请求连接报文后,会发送ACK进行确认,如果这个过程中ACK丢失了,实际上连接可以关闭,但服务端会错误地认为连接还没有关闭。因为有TIME_WAIT这个状态,如果客户端发送的ACK丢失了,可以再次发送ACK给服务端。
2.用于将服务器的资源释放,防止前一个连接的报文段被当作后一个连接的报文段,引起数据紊乱。

TCP连接状态的变迁

客户端
服务端

TCP和UDP的区别

1) TCP是面向连接的,可靠性高;UDP是基于非连接的,可靠性低
2) 由于TCP是连接的通信,需要有三次握手、重新确认等连接过程,会有延时,实时性差,同时过程复杂,也使其易于攻击;UDP没有建立连接的过程,因而实时性较强,也稍安全
3) 在传输相同大小的数据时,TCP首部开销20字节;UDP首部开销8字节,TCP报头比UDP复杂,故实际包含的用户数据较少。TCP在IP协议的基础上添加了序号机制、确认机制、超时重传机制等,保证了传输的可靠性,不会出现丢包或乱序,而UDP有丢包,故TCP开销大,UDP开销较小
4)每条TCP连接只能时点到点的;UDP支持一对一、一对多、多对一、多对多的交互通信。
5)TCP面向字节流,UDP面向报文。

滑动窗口

机制

数据在传输时,TCP会对所有数据进行编号,发送方在发送过程中始终保持着一个窗口,只有落在发送窗口内的数据帧才允许被发送;同时接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值