TCP、UDP详解

可靠性保证、安全保证、时延保证、带宽保证
其中TCP提供可靠性保证
安全保证可以有应用层提供
当低层无法提供时延保证、带宽保证,运输层是无法保证的

使用TCP的协议:
FTP(文件传输协议)
Telnet(远程登录协议)
SMTP(简单邮件传输协议)
POP3(和SMTP相对,用于接收邮件)
HTTP协议等。

SYN是同步标志
只在TCP三次握手时有效,提示服务端检查序列编号,在第三次连接时会被置为0
seq是序列号
ack是确认号 、 ACK是确认标志
fin是结束标志

TCP建立连接之所以是三次握手
是为了避免资源的浪费,例如client想跟server建立连接,但是却因为中途连接请求的数据报丢失了,
故client端不得不重新发送一遍,而若之前的请求并未丢失,而是被阻塞,那么server端就会收到两次
请求,并持续等待两个client向他发送数据,这边是资源的浪费,因此三次握手是很有必要的
TCP断开连接是四次挥手
试想一下,假如现在你是客户端你想断开跟Server的所有连接该怎么做?第一步,你自己先停止向Server端发送数据,并等待Server的回复。但事情还没有完,虽然你自身不往Server发送数据了,但是因为你们之前已经建立好平等的连接了,所以此时他也有主动权向你发送数据;故Server端还得终止主动向你发送数据,并等待你的确认。其实,说白了就是保证双方的一个合约的完整执行!

TCP保证了可靠的端到端的数据连接

通过
累计确认ACK
回退N步或选择重传
TCP拥塞控制算法:
拥塞窗口(congestion window) cwnd
慢启动(初始cwnd是1,之后*2递增,过了阀值后线性增长,当发生丢包事件后,会将阈值设为cwnd/2,然后将cwnd置为1
拥塞避免
快速恢复(不是必须的,即没有将cwnd重新置为1,而是置为cwnd/2+冗余ACK包的数量

使用UDP的协议:
TFTP(简单文件传输协议)
SNMP(简单网络管理协议)
DNS(域名解析协议)
NFS、BOOTP。

UDP与TCP相比:

1. UDP没有拥塞控制协议,不会控制发送端的请求数据
2. UDP是无连接,没有建立连接的时延
3. UDP的不需要维护关于连接状态的信息
4. UDP的报文段首部是8个字节,TCP是20个字节

你可能感兴趣的:(面试)