一:TCP协议的传输特点

1.TCP协议是一个面向连接的传输层协议,提供高可靠性字节流传输服务,主要用于一次传输要交换大量报文的情形

为了维护传输的可靠性,TCP增加了许多开销,如:确认、流量控制、计时器以及连接管理等

2.TCP协议的传输特点是:

①端到端通信:TCP提供给应用面向连接的接口。TCP连接是端到端的,客户应用程序在一端,服务器在另一端

②建立可靠连接:TCP要求客户的应用程序在与服务器交换数据前,先要连接服务器,保证连接可靠建立,建立连接测试了网络的连通性,如果有故障发生,阻碍分组到达远端系统,或者服务器不接受连接,那么企图连接就会失败,客户就会得到通知

③可靠交付:一旦建立连接,TCP保证数据将按发送时的数据交付,没有丢失,也没有重复,如果因为故障而不能可靠交付,发送方会得到通知

④具有流控的传输:TCP控制数据传输的速率,防止发送方传送数据的速率快于接收方的接收速率,因此TCP可以用于从快速计算机向慢速计算机传送数据

⑤双工传输:在任何时候,单个TCP连接都允许同时双向传送数据,而且不会相互影响,因此客户可以向服务器发送请求,而服务器可以通过同一个连接发送应答

⑥流模式:TCP从发送方向接收方发送没有报文边界的字节流

二:TCP的首部

TCP数据被封装在一个IP数据包中

1.流式套接字依托传输控制协议(在TCP/IP协议簇中对应TCP协议),提供面向连接的,可靠的数据传输服务,该服务将保证数据能够实现无差错、无重复发送,并按顺序接收。基于流的特点,使用流式套接字传输的数据形态是没有记录边界的有序数据流

2.流式套接字基于可靠的数据流传输服务,这种服务的特点是面向连接、可靠。面向连接的特点决定了流式套接字的传输代价大,且只适合于一对一的数据传输;而可靠的特点意味着上层应用程序在设计开发时不需要过多的考虑数据传输过程中的丢失、乱序、重复问题

3.TCP使用场景:①大数据量的数据传输应用②可靠性要求高的传输应用

4.服务器:

①调用WSAStartup()函数加载Windows Sockets DLL,然后调用socket()函数创建一个流式套接字,返回套接字s

②调用bind()函数将套接字s绑定到本地的端点地址上

③调用listen()函数将套接字s设置为监听模式,准备接收来自各个客户的连接请求

④调用accept()函数等待接受客户的连接请求

⑤如果接收到客户的连接请求,则accept()函数返回,得到新的套接字ns(叫做连接套接字)

⑥调用recv()函数在套接字ns上接受来自客户的数据

⑦处理客户的服务器请求

⑧调用send()函数在套接字ns上向客户发送数据

⑨与客户的通信结束后,服务器进程可以调用shutdown()函数通知对方不再发送或接受数据,也可以由客户进程断开连接。断开连接后,服务器进程调用closesocket()函数关闭套接字ns。此后服务器进程继续等待客户进程的连接,回到第4步

⑩如果要退出服务器进程,则调用closesocket()函数关闭最初的套接字

客户端:

①调用WSAStartup()函数加载Windows Sockets DLL,然后调用socket()函数创建一个流式套接字,返回套接字s

②调用connect()函数将套接字s连接到服务器

③调用send()函数向服务器发送数据,调用recv()函数接受来自服务器的数据

④与服务器的通信结束后,客户进程可以调用shutdown()函数通知对方不再发送或接收数据,也可以由服务器进程断开连接。断开连接后,客户进程调用closesocket()函数关闭套接字s

5.如果服务器是循环服务器,则服务器在与一个客户建立连接后,其他客户只能等待,当一个客户服务完之后,服务器才会处理另一个客户的服务请求。在循环服务器的通信流程中步骤4~9是循环进行的

6.如果是并发服务器,则当服务器与一个客户进行通信的过程中,可以同时接收其他客户的服务请求,并且服务器要为每一个客户创建一个单独的子进程或线程,用新创建的连接套接字与每个客户进行独立连接上的数据交互。在并发服务器的通信流程中,通过第4步返回了多个连接套接字(ns),这些连接套接字在步骤5~9与多个客户通信时是并发执行的

7.调用getaddrinfo()函数,获得服务器的IP地址,将其存放在result指向的addinfo对象中

100-网络编程——第五章流式套接字相关推荐

  1. TCP流式套接字的异步事件WSAAsyncSelect编程

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! WSAA ...

  2. 【计算机网络】--- 流式套接字通信

    流式套接字通信 引言 TCP协议的传输特点(面试官常考点) TCP的首部 TCP首部个字段的含义如下(大致掌握) TCP连接的建立和终止(面试官必考) "三次握手".如下图所示 注 ...

  3. Linux 网络编程详解一(IP套接字结构体、网络字节序,地址转换函数)

    IPv4套接字地址结构 struct sockaddr_in {uint8_t sinlen;(4个字节)sa_family_t sin_family;(4个字节)in_port_t sin_port ...

  4. 创建一个TCP流式套接字

    #python网络套接字模块 from socket import *HOST = '172.60.50.218' PORT = 8888 ADDR = (HOST,PORT) BUFFERSIZE ...

  5. 流式套接字(SOCK_STREAM),数据报套接字 (SOCK_DGRAM) 的比较

    1.流式套接字 使用这种套接字时,数据在客户端是顺序发送的,并且到达的顺序是一致的.比如你在客户端先发送1,再发送2,那么在服务器端的接收顺序是先接收到1,再接收到2,流式套接字是可靠的,是面向连接的 ...

  6. TCP/IP网络编程---Linux系统下的TCP套接字编程

    目录 第一章 理解网络编程和套接字 1.1 网络编程和套接字概要 1.2 基于Linux的文件操作 1.2.1 底层文件访问和文件描述符 1.2.2 打开文件 1.2.3 关闭文件 1.2.4 将数据 ...

  7. Socket基础四:基于流式套接字的网络程序(并发服务器设计)

    作者:刘磊 2020.4.27 参考书目:<Windows网络编程>刘琰等著 并发性 并发性是TCP/IP程序的基础,服务器软件必须在程序中有专门的支持并发的硬件或专门的机制实现并发处理. ...

  8. C++网络编程(一):TCP套接字编程

    目录 基本数据结构 TCP服务器端的默认函数调用顺序 TCP客户端的默认函数调用情况 TCP网络编程主要流程 TCP客户端套接字的地址分配 TCP套接字的I/O缓存 代码实例 面试常见问题详解 参考资 ...

  9. C++网络编程(二):UDP套接字编程

    目录 基本特点 流程 基于UDP的数据I/O函数 UDP客户端套接字的地址分配 UDP套接字的数据边界 未连接UDP套接字.已连接UDP套接字 创建已连接UDP套接字 代码示例 参考资料 基本特点 U ...

  10. Linux网络编程——端口复用(多个套接字绑定同一个端口)

    在<绑定( bind )端口需要注意的问题>提到:一个网络应用程序只能绑定一个端口( 一个套接字只能绑定一个端口 ). 实际上,默认的情况下,如果一个网络应用程序的一个套接字 绑定了一个端 ...

最新文章

  1. 云监控状态调查:公有云和混合云的监控成熟度落后于传统数据中心
  2. hadoop完全分布式集群群起
  3. BZOJ1296:[SCOI2009]粉刷匠
  4. jdbc详解:1、创建数据库connection连接
  5. matlab入门之旅,MATLAB 入门之旅学习笔记
  6. 支持nvme的linux_Linux nvme驱动初探
  7. java unsafe 类_Java的Unsafe类
  8. git 命令行(一)-版本回退
  9. 程序员:站在自学鄙视链顶端的王者(太真实!)
  10. 《javascript语言精髓与编程实践》--原型继承笔记
  11. const和define在值定义上的区别
  12. 基于SSM 的图书馆管理系统
  13. 解决在局域网内QQ传文件慢的问题(转)
  14. 谷歌金山词霸合作版下载
  15. 重装Office教程
  16. python往npy写入数据_操作python实现npy格式文件转换为txt文件
  17. 第十届蓝桥杯省赛C组 c语言
  18. PyQt5开发的数据编辑器(一)
  19. 数据库(笔记)——候选码、主码、外码以及关系的完整性
  20. 当你遇到问题时,如何去获取帮助

热门文章

  1. 基于R语言的贝叶斯网络模型的实践技术
  2. java连接数据库步骤
  3. 孔浩老师的CMS项目源码部署问题
  4. 最新支付宝扫码点餐系统小程序源码带部署教程
  5. 物业收费管理系统c语言编程,C语言程序设计-物业管理系统.doc
  6. 《推荐系统实践》算法纯享(附代码链接)(四)—— UGC推荐篇
  7. 《推荐系统实践》项亮 书中程序实现
  8. [地图代数]处理DEM中的高程异常值——ArcGIS栅格计算的应用
  9. 【自学笔记】三维copula的构建与分布函数的求解
  10. 破解 语序点选验证码