TCP与UDP学习小结

TCP六个标志位:

  • SYN – 同步(建立联机)
  • ACK – 确认
  • PSH – 传送
  • FIN – 结束
  • RST – 重置
  • URG – 紧急

1、RST作用

RST用来关闭异常连接
例1:A向B发起连接,但是B之上没有监听该端口,则B的TCP处理程序会直接发给A一个RST
例2:A向B发送了FIN请求,B返回ACK但是网断了,A长时间未收到放弃了该连接,B连上网络后重新发ACK给A,A无法识别这个野连接,就发回一个RST包强制关闭该连接

2、URG和PSH区别

URG和PSH都表示数据要优先处理
URG为1时,数据开始到紧急指针部分,不必进入缓冲区直接交付上层应用
RST为1时,数据要进入缓冲区,数据完整接收后立即交付上层(不用等待缓冲区满)

TCP通讯过程

tcp

1. 三次握手建立连接
  • 客户端发一个SYN握手包给服务端
  • 服务端发一个ACK确认包和SYN握手包给客户端
  • 客户端发一个ACK确认包给服务端
    此时,客户端和服务端都得到了对方确认,开启传输通道,抛出线程处理连接
2. 数据传输
  • 数据发送端传输PSH包
  • 数据接受端回复ACK包
3. 四次挥手断开连接

为什么要有四次挥手?计算机资源有限,不使用的时候需要释放

  • 客户端发送一个FIN结束包给服务端,证明数据请求完毕
  • 服务端发送一个ACK确认包给客户端,证明已经收到FIN
  • 服务端发送一个FIN结束包给客户端,证明数据发送完毕
  • 客户端发送一个ACK确认包给服务端,证明已经收到FIN

注意:客户端发送ACK后不会立即断开,需等待2MSL(最长报文寿命)再断开,防止ACK到达不了服务端就被关闭连接或早已失效的连接请求报文出现在新连接中

至此,客户端和服务端都已经确认要断开连接,连接断开,释放资源

四次握手不是关闭TCP的唯一方法,在以下情况会发送RST包关闭连接

  • 主机需要尽快关闭连接
  • 连接超时(对方长时间无响应)
  • 端口或主机不可达(对方意外断开连接)

TCP和UDP区别

1. TCP特性

TCP首部

  • 面向连接
    通过三次握手建立连接,四次挥手断开连接
  • 面向字节流
    发送端应用层传入数据字节流(为了不发生丢包现象,每个数据包都会标注序号),在传输层TCP将字节流分成适当长度的报文段,然后传送至网络层,经过各种协议到达接受端的传输层按序读取字节传给应用层。

  • 可靠性
    • 确认信号:每次收到完整的TCP报文后都会返回ACK确认包
    • 超时重传:每次发出一个报文都会启动计时器,若在规定时间内未收到对方传回的ACK包,会重新发送
    • 检验和:TCP始终保持首部和数据的检验和,如果收到的报文检验和有差错,则丢弃报文,不返回ACK包
    • 重新排序:由于IP数据报达到可能失序,TCP会将数据进行重新排序交给应用层
    • 丢弃重复:TCP会丢弃重复的IP数据包
    • 流量控制:接收端将自己可接受的缓冲区大小放入TCP首部,通过ACK告知发送端,发送端以此为依据来传输数据,针对发送方和接收方速度不匹配的问题
    • 拥塞控制:针对过多的数据注入网络中,使得网络中路由器或链路不致过载问题
2. UDP特性

  • 无连接
    发送报文段之前发送端和接受端没有握手,并且可以实现一对多通信

  • 面向报文
    发送方直接将应用层传入的报文加上首部后进行传输,不合并也不拆分,无论应用层交给UDP多长的报文,都作为一个报文发送,接收方接到后直接去除首部传给应用层

  • 不可靠
    UDP只有一个socket接收缓冲区,没有socket发送缓冲区,即只要有数据就发,不管对方是否可以正确接收,也没有TCP的一系列可靠机制

  • 速度快
    UDP头部只有8字节,不需要建立连接,并且没有可靠的丢失重发机制(UDP检验和提供了差错检测,但它对差错恢复无能为力)

以上为近期学习TCP和UDP的小结,如有错误欢迎指正。。。

参考:计算机网络基础-总结攻略

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值