Socket 通信机制详解

Socket 是网络编程中一种重要的通信机制,它允许不同的计算机通过网络进行数据交换。

一、 Socket 的概念

Socket(套接字)是计算机网络编程中的一种抽象,它提供了在网络上进行通信的接口。

Socket 本质上是一种通信的端点,它在网络上标识了一个通信链路的两端,并提供了通信双方所需的接口和功能。

通过使用 Socket,可以在不同计算机之间建立连接,并进行数据的传输和交换(网络通信)

二、 Socket 类型

在 Socket 编程中,常见的两种类型是 TCP Socket 和 UDP Socket。

  • TCP Socket:TCP(传输控制协议)是一种面向连接的协议,它提供可靠的、有序的数据传输。TCP Socket 基于 TCP 协议,使用三次握手建立连接,确保数据的可靠性和顺序性。

  • UDP Socket:UDP(用户数据报协议)是一种无连接的协议,它提供了简单的数据传输服务,但不保证数据的可靠性和顺序性。UDP Socket 基于 UDP 协议,无需建立连接,适用于一些实时性要求高、允许一定数据丢失的应用场景。

三、 Socket 的工作原理

3.1 三次握手

这里需要先讲一下TCP 协议中的三次握手。

同步序号:SYN   确认字段:ACK  随机数据:seq

规定:

当SYN=1,ACK=0表示连接请求

当SYN=1,ACK=1表示同意建立连接

如上图,纵向的轴,是一个时间轴。

第一次握手:时间点1,客户端向服务端发送连接请求报文段。ACK=0,SYN=1,seq=x

将SYN位置为1,Sequence Number为x;然后,客户端进入SYN_SEND状态,等待服务器的确认;

第二次握手:服务器收到SYN报文段。服务器收到客户端的SYN报文段,需要对这个SYN报文段进行确认,设置Acknowledgment Number为x+1(Sequence Number+1);同时,自己自己还要发送SYN请求信息,将SYN位置为1,Sequence Number为y;服务器端将上述所有信息放到一个报文段(即SYN+ACK报文段)中,一并发送给客户端,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK报文段。然后将Acknowledgment Number设置为y+1,向服务器发送ACK报文段,这个报文段发送完毕以后,客户端和服务器端都进入ESTABLISHED状态,完成TCP三次握手。

完成了三次握手,客户端和服务器端就可以开始传送数据。


TCP/IP 三次握手:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_喵酱_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值