四 基于TCP的服务器端/客户端(1)

TCP/IP协议栈


链路层


物理网络连接结构



IP


向目标传输数据需要经过哪条路径?

TCP/UDP


又称传输层,IP层只关注一个数据包的传输过程,即使传输多个数据包,每个数据包也是由IP层实际传输的,也就是说,传输的顺序及传输本身不可靠的。若只利用IP层传输数据,则有可能导致后传输的数据包B比先传输的数据包A先到达目的地。也有可能在传输的过程中丢失A,反之如果添加TCP协议的话就不会出现这种情况。数据交换过程中可以确认对方已收到数据,并重传丢失的数据,那么IP层不保证数据传输,这类通信也是可靠的。

总之,TCPUDP存在于IP层之上,决定主机之间的数据传输方式,TCP确认之后向不可靠的IP协议赋予可靠性。

应用层:

上述内容是套接字通信过程中自动处理的。编写软件的过程中,需要根据程序特点决定服务端和客户端之间的数据传输规则(规定),这便是应用层的协议。网络编程的大部分内容就是设计并实现应用层协议。


实现基于TCP的服务器端/客户端


TCP服务器端:


1.进入等待连接请求状态:调用listen函数,准备好服务器端套接字和连接请求等待队列后,这种可接收连接请求的状态成为等待连接请求状态。

2.受理客户端连接请求:调用accept函数从队头取一个连接请求与客户端建立连接,并返回创建的套接字文件描述符。另外,调用accept函数时若等待队列为空,则accept函数不会返回,直到队列中出现新的客户端连接。


TCP客户端:


客户端调用connect函数后,发生以下情况之一才返回:

1.服务器端接收连接请求。(其实是服务器端把连接请求信息记录到等待队列)

2.发生断网等异常情况而中断连接请求。


基于TCP服务器端/客户端函数调用关系图:



存在的问题:

因为TCP不存在数据边界,客户端多次调用write函数传递的字符串可能一次性传递到服务器端。所以要添加应用层协议。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值