TCP和UDP套接字编程

套接字编程是应用层调用传输层服务的基础,分为TCP和UDP两种方式。TCP提供可靠、顺序的字节流传输,需要3次握手建立连接,适合需要稳定通信的场景。UDP则是无连接的,每个数据包独立发送,不保证顺序或可靠性,适用于实时通信或对延迟敏感的应用。在编程中,服务器通常先创建监听套接字等待客户端连接,客户端创建套接字指定服务器地址和端口进行连接。连接建立后,双方通过套接字进行读写操作,最后关闭套接字。
摘要由CSDN通过智能技术生成

一、Socket简单介绍

如果要在应用层调用传输层的服务,进行相关程序的设计,就要涉及到套接字编程。套接字也称之为Socket,本质上它就是利用传输层提供的一系列Api来进行网络应用程序的设计。
网络应用程序如果要进行套接字编程,需要明确的创建、使用及释放套接字。
套接字编程是典型的C/S模式。
从下图中可以形象的看到套接字的作用:
在这里插入图片描述
(1)套接字是一个主机本地应用程序所创建的,为操作系统所控制的接口。
(2)应用程序通过这个接口,使用传输层提供的服务,跨网络发送/接收消息到/从其它应用进程。

二、用TCP进行套接字编程

套接字编程有面向连接和无连接两种实际上就是TCP套接字编程和UDP套接字编程。
可以使用源端口号来区别客户。
使用TCP进行套接字编程时客户必须初始联系服务器,这时服务器进程必须先运行,创建套接字来迎候客户的初始联系。
那么客户如何初始联系服务器呢?主要有3个步骤:
(1)创建客户本地TCP套接字。
(2)指定服务器进程的IP地址和端口号。
(3)一旦客户创建套接字,客户TCP就发起3次握手并建立与服务器TCP连接。
一旦客户初始联系服务器,服务器TCP为服务器进程创建1个新的套接字与客户通信。这里允许服务器与多个客户通信,而端口号被用来区分客户。
从应用程序的角度来看,TCP为客户和服务器提供了可靠的、顺序的、字节流的传输。

TCP客户/服务器套接字交互流程

流程图如下:
在这里插入图片描述
(1)服务器创建一个在端口x上的套接字,然后等待连入请求
(2)在服务器等待连入请求的过程中客户机如果要连接服务器它会创建一个到服务器的IP地址然后和服务器的端口号x相连接的套接字。
(3)使用这个套接字和服务器进行TCP连接建立
(4)连接建立好以后客户机使用套接字向服务器端发送相关请求。
(5)服务器端读到请求以后使用写应答的方式把数据发送给客户机。
(6)客户机读取应答,当所有的读写操作都进行完成以后,客户机关闭套接字。
(7)服务器也关闭套接字
注意:服务器这时关闭的是客户机刚才建立的TCP连接上所对应的套接字,但是监听套接字还在,因为监听套接字要等待下一次的到来。

三、用UDP进行套接字编程

与TCP不同:
(1)当用UDP进行套接字编程时没有初始握手手段;
(2)发送方明确将接收方的IP地址和端口号加入到每个分组。
(3)服务器必须从接收到的分组中析取发送方进程的IP地址、端口号。
这种方式在发送数据时可能被乱序收到或丢失。
从应用程序的角度来看UDP在客户和服务器之间提供一组字节的不可靠传输。

UDP客户/服务器套接字交互流程

流程图如下:
在这里插入图片描述
(1)服务器对入栈请求创建套接字,端口是x。
(2)客户机如果要给服务器端发送数据,它也创建一个套接字,这个套接字使用服务器的ip地址和服务器的端口,直接使用这个套接字发送数据包请求。
(3)服务器从服务器套接字中读请求。
(4)服务器收到请求后将应答写到服务器套接字上面,在写应答上面有客户机主机地址和端口号。
(5)客户机从套接字上面读取应答。
(5)这个过程一直进行,客户机如果收发完毕就退出,而服务器又回到前一步继续等待下一个客户机套接字请求的到来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值