网络编程学习笔记2 ------ TCP/UDP

网络编程学习笔记2 ------ TCP/UDP

1. TCP

TCP协议全称是传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议,由 IETF 的RFC 793定义。TCP 是面向连接的、可靠的流协议。流就是指不间断的数据结构,你可以把它想象成排水管中的水流。

1.1 TCP连接: TCP三次握手的Socket过程
在这里插入图片描述

  • 服务器调用socket()bind()、**listen()完成初始化后,调用accept()**阻塞等待;
  • 客户端Socket对象调用connect()向服务器发送了一个SYN并阻塞;
  • 服务器完成了第一次握手,即发送SYNACK应答;
  • 客户端收到服务端发送的应答之后,从connect()返回,再发送一个ACK给服务器;
  • 服务器Socket对象接收客户端第三次握手ACK确认,此时服务端从**accept()**返回,建立连接。

1.2 TCP断开: TCP四次挥手的Socket过程
在这里插入图片描述

  • 某个应用进程调用close()主动关闭,发送一个FIN
  • 另一端接收到FIN后被动执行关闭,并发送ACK确认;
  • 之后被动执行关闭的应用进程调用close()关闭Socket,并也发送一个FIN
  • 接收到这个FIN的一端向另一端ACK确认。

1.3 通过序列号与确认应答提高传输可靠性

TCP传输协议,两台主机建立好连接之后,开始进行数据传输,当发送端的数据到达接收端,接收端会返回一个收到消息的应答,这个消息叫做确认应答ACKTCP通过确认应答ACK实现可靠的数据传输。

​ 发送端将数据发送之后,会等待对方的确认应答,如果有确认应答,说明数据已经成功到达对端,反之,发送端在一定时间内没有收到ACK应答,就认为数据丢失,会重新 进行发送。

​ 序列号是按照顺序给发送数据的每一个字节都标上号码的编号,接受端通过数据包首部中的序列号和数据长度,将自己下一次应该接收的数据的序列号作为确认应答发送给 发送端,这样,通过序列号和确认应答号,TCP可以实现可靠传输。

1.4 TCP 通信模型
在这里插入图片描述

2. UDP

UDP传输不提供复杂的控制机制,它利用IP提供面向无连接的通信服务。UDP报文没有可靠性保证,顺序保证,和流量控制,可靠性比较差,传输过程中即使出现包丢失也不会重发。 也正是因为这些,它的资源消耗小,传输速度快,通常音频,视频在传送时用UDP传输较多。

UDP无需连接,即用即发。

2.1 UDP通信模型
在这里插入图片描述

3. UDP/TCP

在这里插入图片描述

在这里插入图片描述

4. 参考

一文读懂Socket通信原理

UDP和TCP协议介绍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值