TCP(一) -- 初识TCP

一:摘要概述

网络传输协议中TCP的重要性不言而喻,毫不夸张的说只有深入掌握TCP协议才能在这条路上走的更远。TCP上学时就接触到它是一个可靠的、面向连接的、基于字节流的、双全工协议。TCP系列文章中将会一一解答这些概括性定义,当然其中必不可少的将会使用到Wireshark、PacketDrill等工具,也会深入解析netstat、nc、tcpdump、telnet等常用Linux网络命令。系列文章都是在阅读张师傅的掘金小册之后整理总结,有兴趣最好是购买一本小册,写得物超所值

二:TCP/IP分层

优秀的架构设计理所当然的会保持单一职责,TCP/IP协议模型将不同职责的协议划分为四个分层即:应用层传输层网络层链路层。每个层级的协议都相对应的拥有各自的职责,其中TCP协议位于传输层

网络分层示意图

三:TCP协议结构

在这里插入图片描述

四:协议头端口

网络传输数据时顺序为:发送端应用层 -- 发送端传输层 -- 发送端网络层 -- 发送端链路层 -- 接收端链路层 -- 接收端网络层 -- 接收端传输层 -- 接收端应用层,服务器上运行肯定不止一个应用,那么数据包归属于具体的某个应用就需要依靠端口判断,这也就是老生常谈的应用监控端口

五:协议头两个号

序列号与确认号是保证TCP协议可靠安全的重要组成,在连接建立中进行初始值交互,后续的数据传输中序列号保证包顺序,确认号保证数据包达到。后续会详细讲解连接创建的三次握手与数据包丢失的重传过程,其中就可以看到两者的长袖挥舞

六:协议头标志

通过WireShark抓包就可以详细看到TCP协议中的这些标志,标识的是包类型。其中握手环节会有SYN、ACK,挥手环节的FIN、以及关闭RST等等

在这里插入图片描述

七:协议头窗口

TCP设计中的窗口后续会专门讲解滑动窗口,就会衍生出发送端的发送窗口,接收端的接收窗口等等概念。这里需要记住的是这个窗口仅仅是为了告诉连接对方俺的接收窗口大小

八:协议头校验和

网络传输过程中有着许多不可预测的因素存在,结果就是有可能会导致数据传输包的缺失。TCP协议既然是可靠的传输层协议,自然需要确保数据完整,校验和的作用就在于接收方会根据这个数值判断数据包的完整性

九:协议头选项

选项中也会存有许多有意思的概念数据,例如比较重要的MSS、Window Scale、SACK等信息,这些信息都会在后续文章中详细讲解

猜你喜欢

转载自juejin.im/post/5e000c8af265da339a1aad8a
tcp
今日推荐