服务器编程入门(3)TCP协议详解

问题聚焦:
    本节从如下四个方面讨论TCP协议:
    TCP头部信息:指定通信的源端端口号、目的端端口号、管理TCP连接,控制两个方向的数据流
    TCP状态转移过程:TCP连接的任意一端都是一个状态机
    TCP数据流:两种主要类型:交互数据流,成块数据流
    TCP数据流的控制:保证可靠传输和提高网络通信质量,两个方面:超时重传,拥塞控制


1 TCP服务的特点

传输层协议:TCP协议,UDP协议
TCP协议特点:面向连接,字节流和可靠传输
    先建立连接,才能开始读写数据
    双方都要分配内核资源
    全双工,读写可以通过一个连接
    必须断开连接,以释放资源
    一对一,所以不适合基于广播和多播的应用程序(UDP适合)
字节流服务:发送端执行的写操作次数和接收端执行的读操作次数之间没有任何数量关系,这就是字节流的概念,即应用程序对数据的发送和接收是没有边界限制的。
    (和字节流相对应的是数据报服务:如UDP,发送端应用程序没执行一次写操作,UDP模块就将其封装成一个UDP数据报并发送之,接收端必须针对每一个UDP数据报执行读操作。)

TCP字节流服务和UDP数据报服务的工作流程区别如下图所示:


TCP传输是可靠的:
  •     发送应答机制,即发送端发送的每个TCP报文段都必须得到接收方的应答,才认为这个TCP报文段传输成功
  •     超时重传机制:发送端在发送出一个TCP报文段之后启动定时器,如果在定时时间内未收到应答,它将重发该报文段
  •     重排,整理:TCP报文段最终是以IP数据报发送的,而IP数据报到达接收端可能乱序、重复,所以TCP协议还会对接收到的TCP报文段重排、整理,再交付给应用层。


2 TCP头部结构
如图:


16位端口号:告知主机该报文段是来自哪里(源端口号),以及传给哪个上层协议或应用程序(目的端口)。对于客户端来说,端口号常为系统自动选择。
32位序号:一个TCP通信过程中某一个传输方向上的字节流的每个字节的编号。如某个TCP报文段传送的数据是字节流中的第1025到2048字节,那么该报文段的序号值就是ISN+1025,ISN为初始序号值。
32位确认号:用作对另一方发送来的TCP报文段的响应。其值是收到的TCP报文段的序号值加1。
4位头部长度:标识TCP头部有多少个4字节。最长标识60字节。
6位标志位:<
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值