基于TCP/IP协议的服务器和客户端程序的一般流程,如下图所示:

1、服务器初始化——LISTEN
(1)调用socket函数创建文件描述符。
(2)调用bind函数将当前的文件描述符和ip/port绑定在一起。如果这个端口已经被其他进程占用了,就会bind失败。
(3)调用listen函数声明当前这个文件描述符作为一个服务器的文件描述符,为accept做好准备。
(4)调用accept函数阻塞等待客户端连接起来。

2、建立连接的过程——三次握手(绿色部分)
第一次:调用connect函数发出SYN段向服务器发起连接请求,并阻塞等待服务器应答。
第二次:服务器收到客户端的SYN段后,会应答一个SYN-ACK段表示“同一建立连接”。
第三次:客户器端收到SYN-ACK后会从connect函数中返回,同时应答一个ACK段。

3、数据传输的过程(蓝色部分)
建立连接后,TCP协议提供全双工的通信服务。所谓全双工,意思是:在同一条链路中的同一时刻,通信双方可以同时写数据。相对的概念叫做半双工,即:在同一条链路中的同一时刻,只能由一方来写数据。
(1)服务器从accept函数返回后立刻调用re

TCP协议的通讯流程相关推荐

  1. WCF中如何用nettcp协议进行通讯

    快速阅读 如何在wcf中用net tcp协议进行通讯,一个打开Wcf的公共类.比较好好,可以记下来.配置文件中注意配置 Service,binding,behaviors.  Service中配置en ...

  2. 使用TCP协议的NAT穿透技术 (转)

    其实很早我就已经实现了使用TCP协议穿透NAT了,但是苦于一直没有时间,所以没有写出来,现在终于放假有一点空闲,于是写出来共享之. 一直以来,说起NAT穿透,很多人都会被告知使用UDP打孔这个技术,基 ...

  3. IP/TCP协议详解

    系列文章目录 第一篇 : TCP/IP协议详解 第二篇 : IP协议 第三篇 : TCP协议 第四篇 : 面试准备 文章目录 系列文章目录 前言 第一章.TCP/协议族 1.1 层次介绍 1.2 封装 ...

  4. 网络5g以及tcp协议等

    网络5g以及tcp协议等 通讯的有关信息 网络的有关信息 OSI七层模型参考 TCP/IP 5层模型 数据的封装和解封 ------------------------------------- 通讯 ...

  5. TCP协议通讯流程(三次握手及四次挥手)

    TCP协议通讯流程(三次握手及四次挥手) 文章目录 TCP协议通讯流程(三次握手及四次挥手) 一.服务器端 二.客户端 三.三次握手四次挥手 三.具体流程 四.相关注意事项 一.服务器端 调用sock ...

  6. QQ--基于TCP/UDP协议的通讯原理

    QQ是一个基于TCP/UDP协议的通讯软件  发送消息的时候是UDP打洞,登陆的时候使用HTTP~因为登陆服务器其实就是一个HTTP服 务器,只不过不是常用的那些,那个服务器是腾讯自行开发的!   一 ...

  7. 用C#实现基于TCP协议的网络通讯

    TCP协议是一个基本的网络协议,基本上所有的网络服务都是基于TCP协议的,如HTTP,FTP等等,所以要了解网络编程就必须了解基于TCP协议的编程.然而TCP协议是一个庞杂的体系,要彻底的弄清楚它的实 ...

  8. QQ使用了什么通讯协议?为什么要这样做?为什么采用 UDP 协议,而不采用 TCP 协议实现?

    登陆采用TCP协议和HTTP协议,你和好友之间发送消息,主要采用UDP协议,内网传文件采用了P2P技术. QQ对于普通用户是采用UDP协议,对于会员用TCP协议 总来的说: 1.登陆过程,客户端cli ...

  9. 用C#实现基于TCP协议的网络通讯(2)

    2008-09-09 19:36 作者: 出处:www.4oa.com ( 11 ) 砖   ( 12 ) 好  评论 ( 0 ) 条 进入论坛 更新时间:2005-09-29 14:54 关 键 词 ...

最新文章

  1. 百度“知识增强的跨模态语义理解技术”获国家技术发明奖
  2. python从小到大的顺序输出-python从小到大的顺序输出
  3. python语言格式化输出_Python | 格式化输出字符串
  4. 改变服务器控件的显示属性,2.6.1 设置Style特性和其他属性
  5. Manjaro 软件源及软件管理相关操作【pacman、pacman-mirrors】整理
  6. boost::multi_array模块测试 index_gen 的代码
  7. 复合主键 复合外键_复合双重错误
  8. 函数运行 形参实参变化 内存空间_可能python创始人都不知道的,python函数实参形参讲解...
  9. mysql+添加乱码_rsyslog+loganalyzer+mysql的IP添加与中文乱码解决
  10. win7x64 连接oracle 客户端 vs 2010调试 提示“ORA-12154: TNS: 无法解析指定的连接标识符 ”
  11. JavaScript 高级程序设计笔记
  12. 软件测试性能测试报告完整版,性能测试报告模板
  13. 【matlab图像处理】图像直方图操作和matlab画图
  14. HTML/CSS写的简单的注册页面
  15. 完整的项目管理流程包括什么?
  16. IBM CEO彭明盛年薪上涨11%达2090万美元
  17. liferay mysql_Liferay中搭配MySQL数据库的两种措施
  18. 全国大学生FPGA创新设计竞赛:FPGA—相位干涉仪测向算法
  19. 用谷歌地图api获取图形范围内有几个标记点
  20. EMC 重新注册license

热门文章

  1. P1085 [NOIP2004 普及组第一题] 不高兴的津津 ← 模拟题
  2. LED驱动器 DC恒流电源板模块
  3. 哥大sps学院有计算机,哥大的sps学院是什么意思
  4. QuickBooks Online For Dummies, 4th Edition 免积分下载
  5. 如何发布一款Android应用到安卓市场
  6. Java中实现原子操作
  7. 辣鸡公司联动优势,你在毕业季给应届毕业生解约的操作真TM丑陋
  8. Django项目之美多商城遇到的问题记录与解决(一)
  9. 【云栖大会】国家天文台结盟阿里云:计算100亿光年的数字宇宙
  10. codeforces-750【C思维】