后台开发核心技术(七)TCP协议

本文深入探讨TCP协议,包括头部结构、3次握手与4次挥手、状态转换图以及拥塞控制策略。详细解释了TCP连接的建立、数据传输的可靠性、流量控制和拥塞控制机制,旨在帮助读者理解TCP协议的工作原理。
摘要由CSDN通过智能技术生成

TCP协议

  1. TCP头部格式
    tcp头部
    1 ) 16位端口号:
    告知主机该报文段是来自哪里以及传给哪个上层协议或者应用程序的。在TCP通信时,客户端通常使用系统自动选择的临时端口号,而服务器则使用知名服务端口号。知名服务端口号定义在/etc/services中。

    2 ) 32位序号:
    一次TCP通信过程中某一个传输方向上的字节流的每个字节的编号。
    假设主机A和主机B进行TCP通信,A发给B的第一个TCP报文段中,序号值被初始化为某个随机值ISN,那么在这个传输方向上,后续的TCP报文段中的序号值被系统设置为ISN+该报文段所携带数据的第一个字节在整个字节流中的偏移。
    例子:某个TCP报文段传送的数据是字节流中的第1025~2048字节,那么该报文段的序号值就是ISN+1025。

    3 ) 32位确认号:
    用作对另一方发送的TCP报文段的相应。其值是收到的TCP报文段的序号值加1。

    4 ) 4位头部长度:
    标识TCP头部有多少个4Byte。4位能表示0~15,所以TCP头部最长为60Byte。

    5 ) 6位标志位
    URG:表示紧急指针是否有效。
    ACK:表示确认号是否有效。一般携带ACK标志的TCP报文段为确认报文段。
    PSH:提示接收端应该立即从TCP接受缓冲区中读走数据,为接受后续数据腾出空间。
    RST:表示要求对方重新建立连接。一般称携带RST标志的TCP报文段为复位报文段。
    SYN: 表示请求建立一个连接。一般称携带SYN标志的TCP报文段为同步报文段。
    FIN: 表示通知对方要关闭连接了。一般称携带FIN标志的TCP报文段为结束报文段。

    6 ) 16位窗口大小:TCP流量控制的一个手段。指的是接受通告窗口,告诉对方本端TCP接受缓冲区还能容纳多少字节的数据,这样对方可以控制发送数据的速度。

    7 ) 16位校验和:由发送端填充,接收端对TCP报文段执行CRC算法,验证是否损坏。

    8 ) 16位紧急指针:是一个正的偏移量。它和序号字段的值相加表示最后一个紧急数据的下一个字节的序号。确切的说,这个字段是紧急指针相对当前序号的偏移。

    总结:

    1 ) TCP的包没有IP地址,但是有源端口和目的端口。
    2 ) 一个TCP需要4个元组(src_ip、src_port、dst_ip、dst_port)来表示是同一个连接。(还有一个是协议)
    3 ) sequence number是包的序号,用来解决网络包乱序问题。
    4 ) acknowledgement number是ack,用于确认收到。
    5 ) window也就是滑动窗口,用于解决流控问题。
    6 ) TCP Flag,包的类型,用于操控TCP的状态。

  2. TCP的3次握手与4次挥手
    TCP所谓的连接,是在通信双方维护一个连接状态。
    3次握手
    1 ) 建立连接(3次握手)
    第一次握手:建立连接时,客户端发送SYN=J到服务器,进入SYN_SEND状态,等待服务器确认。
    第二次握手:服务器收到SYN=J的包,确认客户的SYN=J(ACK=J+1),同时自己也发送一个SYN=K包,此时服务器进入SYN_RECV状态。
    第三次握手:客户端收到SYN=

后台开发核心技术与应用实践 作者:徐晓鑫 著 出版日期:2016年08月06日 封面宣传语:腾讯云平台技术总监黄世飞、Facebook对外支付项目主程张子兴、微软软件工程师彭可竞、阿里巴巴资深算法工程师周乐、百度大数据高级测试工程师畅晋袂推荐;围绕后台开发需要掌握的核心技术,从多个方面、多个角度进行了阐述,覆盖了该领域的几乎所有内容;充分抓住本质并结合实践,文字通俗易懂,可操作性强 出版书名:后台开发核心技术与应用实践 作者:徐晓鑫 著 封底文字 专家评价 后台开发是一个“历史悠久”的领域,同时也是一个沉淀深厚,高技术价值的领域。本书清晰、严谨、务实的风格显示出晓鑫对该领域知识的深刻理解。 ——张子兴 Facebook对外支付项目主程,美国加州MenloPark 每一位从事后台开发的专业人士都需要一本后台开发指南。对每一位想要认真从事该领域工作的人来说,本书是一本绝对必读的书籍。 ——彭可竞 微软软件工程师,美国华盛顿州Redmond 本书是作者多年后台开发、架构和研究的精华。书中用通俗的文字、详尽的示例代码,结合实际工作中的案例,讲述了后台开发方方面面的知识,内容丰富。对于从事后台开发的人员,这是一本很好的由浅入深的学习书籍。 ——周乐 阿里巴巴资深算法工程师,北京望京 使用C++语言进行后台开发有一定的门槛,本书可以很好地帮助你跨过这个“门槛”。 ——畅晋 百度大数据高级测试工程师,北京上地 前勒口 互网网民日益剧增,各种应用层出不穷,各项技术更新不断。单是游戏行业,近几年就经历了从端游、页游到手游的巨大变迁,客户端更新迭代之快,始料未及。而后台开发中使用到的技术,却变化不是很大。让服务性能更高、处理能力更强、安全性更好,是后台开发工程师永恒的主题。 后台开发中用到的技术,深而广,需要读的“大部头”很多,光是Richard Stevens的APUE,UNP,TCP/IP详解就够读个半年以上。读者通过阅读本书,可以从实践出发,快速由浅入深地进入后台开发领域。在读完本书,有了实践的经验之后,再去阅读大师们的著作,会更有体会,更懂得如何欣赏。 读书的最高境界莫过于“把书读薄,把书读厚”。本书文字通俗易懂,让你更快地“读薄”,同时又涉及较多的核心知识点,顺着这些知识点,读着读着也发觉“读厚”了。 后勒口 徐晓鑫,腾讯资深软件研发工程师,先后在腾讯游戏之洛克王国、QQ会员、QQ秀等项目工作,精通后台开发各种技术,实战经验丰富。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值