Linux网络编程基础:TCP协议特点与编程模型

通信协议与网络编程接口(API)

两者的关系
1)网络编程接口是程序员使用网络通信协议的桥梁
2)操作系统包含用于使用通信协议的网络编程接口函数
3)通过学习调用这些函数,指定不同的函数参数,就可以达到使用不同通信协议的目的
4)Linux系统支持很多协议族,其中TCP/IP协议族用的最广,而TCP与UDP协议是属于此协议族的两个不同的子协议
使用TCP/IP协议族的三种方式
1)TCP路线:应用层–>TCP–>IP–>硬件接口(传输层封装TCP协议包头)
2)UDP路线:应用层–>UDP–>IP–>硬件接口(传输层封装UDP协议包头)
3)IP路线:应用层–>IP–>硬件接口(直接越过TCP与UDP)

TCP协议的特点

1)TCP是有序的、面向连接的、可靠的字节流传输层协议
2)其有三次握手连接机制
所谓三次握手是指首先由客户端发起连接请求,服务器接收到连接请求后给予相应答复,客户端接收后并给予答复以建立数据收发双方之间的连接通路。这个机制的存在可以保证数据传输的可靠,因为只有连接建立成功后双方才能相互通信,类似于发送前的探路,只有确定路子通才出发,这样才稳妥。
3)其有应答机制,就是说数据发送给对方后,对方必须应答是否发送成功
4)其有滑动窗口机制,指可以根据网络的好坏,调整发送分组数据的大小

TCP协议的编程模型

TCP协议的实现必须要有服务器端和客户端

1连接准备阶段

服务器端
1)调用socket函数创建套接字文件,函数返回套接字文件描述符skfd,将用于监听客户连接
2)调用bind函数将套接字文件、ip、端口号绑定在一起,实现固定对应关系
3)调用listen函数将套接字描述符变为被动描述符,用于被动监听客户连接
客户端
1)调用socket函数创建到套接字文件,函数返回套接字文件描述符skfd,用于建立连接以及数据通信

2建立连接阶段

服务器端
1)调用accept函数监听客户端的连接请求,三次握手成功即代表连接成功后,函数会返回一个用于通信的文件描述符fd
客户端
1)调用connect函数主动向服务器发起连接请求,三次握手成功即连接成功

3通信阶段

服务器端
1)调用write或send函数使用用于通信的文件描述符fd向客户端发送数据
2)调用read或recv函数使用用于通信的文件描述符fd从客户端接收数据
客户端
1)调用write或send函数使用套接字文件描述符skfd向服务器端发送数据
2)调用read或recv函数使用套接字文件描述符skfd从服务器端接收数据

4断开连接阶段

服务器端
1)调用close或shutdown函数使用通信文件描述符fd发起断开请求
客户端
1)调用close或shutdown函数使用套接字文件描述符skfd发起断开请求

多客户端情况

1)多线程、多进程通信方式
2)多路io通信方式

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

没事儿站站桩

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

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

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

打赏作者

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

抵扣说明:

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

余额充值