TCP/UDP常见问题合集

没有图,都是口述,简答或面试时使用。

零.tcp/udp中细小知识点:

1.源端口号一般是大于1024的随机端口;
端口号范围:0~65535;
2.常用的tcp/udp端口号:
TCP 20,21 FTP(20为数据端口,21为命令端口);
TCP 23 TELNET
TCP 25 SMTP
TCP/UDP 53 DNS
TCP 80 HTTP
TCP 179 BGP
TCP 443 HTTPS
UDP 67/68 DHCP(68源端口,67目的端口)
UDP 161/162 SNMP(161收发请求,162接收trap)

一.tcp与udp的区别?

1.tcp面向连接,提供可靠交付,通过流量控制,拥塞控制等一些列机制保证可靠传输;udp是无连接的,尽最大可能交付。
2.tcp面向字节流,将应用层报文看成字节流组成大小不等的数据块;udp面向报文,应用层报文并不拆分,只是添加udp首部。
3.tcp连接只能是一对一,而udp支持一对一,一对多,多对多的交互通信。

二.tcp头部报文结构?

1.tcp除头部可选项之外长度为20。
2.报文结构:
源端口,目的端口,序列号,ack号,头部长度,6个控制位:PSH(尽快交付应用层,不要缓存),URG(代表紧急指针是否可用),FIN,SYN,ACK,RST(tcp异常,断开连接),窗口值(主要用于流量控制),校验和,紧急指针(指出本报文段最后一个字节的序号,使接收方知道紧急数据长度),可选长度。

三.tcp三次握手/四次挥手过程?

三次握手:
1.客户端A随机生成一个序列号x,SYN置位为1,向服务器B发送,请求连接,同时A进入SYN-SENT态;
2.B响应A的请求,随机生成序列号y,ack为x+1,SYN置为1,ACK置为1,向A响应并确认,B进入SYN-RCVD态;
3.A收到响应后进入ESTABLISHED态,并返回ACK确认,ACK位置1,序列号为x+1,ack为y+1,值得一提ACK不占用序列号,下一个正常数据序列号依然是x+1,B收到ACK后进入ESTABLISHED状态,建立完成。
四次挥手:
1.首先A先发出释放报文段,FIN置为1,序列号假定为u,发出后A进入FIN-WAIT-1阶段,主动关闭TCP连接,等待B进行确认;
2.B收到后进入CLOSE-WAIT状态,发出确认报文,序列号假定为v,ack为u+1,ACK位置为1,A到B的连接已经释放;
3.A收到ACK后进入FIN-WAIT-2阶段;
4.B没有数据向A发出之后,发出释放连接报文,FIN位置1,ACK位置1,如果之前有数据发送,序列号不确定,如果没有,序列号为v,ack为u+1,B进入LAST-ACK阶段;
5.A收到释放报文后,发送ACK最后确认,序列号为u+1,ack为v+1,B收到后进入CLOSED状态,A等待两倍最大报文存活时间MSL后进入CLOSED状态。

四.为什么要等待两倍的MSL才进入CLOSED状态?

1.保证客户端发送的最后一个ACK能够到达B,如果B没有收到ACK,超时后B会重传ACK+FIN报文段,A能够在两倍的MSL时间内重新收到ACK+FIN,否则B将不能正常进入CLOSED状态;
2.是为了确保等待两倍的MSL后,使得本次连接所产生的报文从网络中消失,下个新的连接不会出现旧的请求报文段。

五.为什么三次握手/四次挥手?

三次握手:
1.为了使得客户端得知自己收发数据没有问题,让服务器端得知自己的收发没有问题,如果说是两次握手,服务端无法得知自己发送数据是否成功;
2.为了防止已经失效的连接请求重新到服务器端,如果某些失效请求在网络中驻留了很久才到服务器,服务端如果不收到ACK就打开TCP连接,就会使得服务端白白等待客户端发送数据,造成资源浪费。
四次挥手:
由于TCP是双向连接,服务器与客户端都可以收发数据,在客户端想要主动断开服务时,服务器端可能还有未发送完成的数据,所以收到客户端FIN报文段后,先发送ACK确认此报文段,等待服务器端报文发送完成后,再进行FIN释放连接请求。

六.什么是tcp流量控制?

tcp流量控制主要是针对接收端处理速度不如发送端速度快的问题,消除发送方使接受方缓存溢出的可能性,接收端通过滑动窗口机制,告知发送端发送数据的大小,达到流量控制的目的;
窗口指的是一次可以发送多少数据;

七.什么是tcp拥塞控制?

tcp拥塞控制主要针对发送方发送数据过快导致网络拥塞的问题,发送方维持一个拥塞窗口,拥塞窗口大小取决于网络拥塞程度,发送方自己的发送窗口=min(发送方拥塞窗口,流量控制中接收方告知发送方的窗口值)。
拥塞控制四种方法:
1.慢启动
首先把拥塞窗口cwnd设置为一个MSS的数值,每次收到对最后一个字节的确认报文后(相当于往返时间RTT)就就将cwnd加倍,当大于慢开始门限ssthresh后,cwnd开始使用拥塞避免算法;
2.拥塞避免
每经过一个RTT,不再将cwnd加倍,而是将cwnd加1。
无论是在慢启动还是在拥塞避免,只要在超时计时器超时后没收确认报文,就将ssthresh减小到出现拥塞时cwnd的一半,然后cwnd改为1,重新开始慢启动。
3.快速重传
普通超时重传中,在超时计时器超时才认为数据包丢失,在快速重传机制中,发送方连续收到三个对同一数据包的确认,即认为数据丢失,不等超时计时器到时就开始重传。
4.快速恢复
配合快速重传,当发现数据包丢失后,就将ssthresh减小到出现拥塞时cwnd的一半,但cwnd直接改为新的ssthresh,随后执行拥塞避免算法,不再经历慢启动。

八.四种计时器

重传计时器,坚持计时器(零窗口),保活计时器(客户端传了一些数据或者建立连接时突然静默了),时间等待计时器(关闭连接时等待两倍的MSL);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值