知识回顾
OSI七层参考模型TCP/IP协议栈
应用程(数据 data):通过人机交互提供各种各样的服务
表示层(数据 data):为上层用户解决用户信息语法问题 编码 解码 加密(即时数据) 解密
会话层(数据 data):发现 建立 维持 终止 会话进程 建立虚拟的端到端的链接
传输层(数据段 segment): 1.数据分段 2.使用端口号区分不同的服务 3.可靠传输
网络层(数据包 packet): 1.使用IP地址进行逻辑寻址 2.建立两个节点间的连接
数据链路层(数据帧 frame):
1.MAC 媒介访问控制层
通过MAC地址进行物理寻址
2.LLC 逻辑链路层
为上层提供FCS校验
数据分帧
物理层(比特流 bit):定义电气、电压、接口规范,光学特性
总结:
上三层为应用程序对数据进行加工和处理——数据流层
下四层为数据传输层面——传输流层
TCP详解
TCP处于OSI的第四层,即传输层四层是传输层,作用有以下三点:
1.用于区分上层不同的服务,采用端口号来区分
0-65535 1-1024(著名端口) 1024-65535(动态端口、高端口)
2.提供可靠的传输机制 确认 重传 排序 流控
三次握手
四次断开
3.数据分段
MSS 最大段长度 1480Byte
MTU 最大传输端元 1500Byte
一个是在传输过程中 一个是在分割数据过程中
1234567891011
常见端口号
FTP 文件传输协议 21
Telnet 远程登录 23
HTTP 超文本传输协议 80
DNS 域名解析系统 53
HTTPS 安全HTTP 443
1.1TCP数据包结构详解
字段解释:
1.端口号:用来标识同一台计算机的不同的应用进程
源端口:源端口和IP地址的作用是标识报文的返回地址
目的端口:指明接收方计算机上的应用程序接口
TCP报头中的源端口号和目的端口号同IP数据报中的源IP与目的IP唯一确定一条TCP连接。
2.序号和确认号seq、ackseq
序号是TCP可靠传输的关键部分。序号是本报文段发送的数据组的第一个字节的序号。在TCP传送的流中,每一个字节一个序号。比如说,一个报文段的序号为300,此报文段数据部分共有100字节,则下一个报文段的序号为400。所以序号确保了TCP传输的有序性
确认号是期望收到对方下一个报文的第一个数据字节的序号,表明该序号之前的所有数据已经正确无误的收到。确认号只有当ACK标志为1时才有效。
什么是ACK标志?
TCP包头的数据结构中的第4行 URG、ACK、PSH、RST、SYN、FIN这些都是标志位,如当URG为1是,紧急指针才有效
3.数据偏移/首部长度
由于首部可能含有可选项内容,因此TCP报头的长度是不确定的,报头不包含任何任选字段则长度为20字节,4位首部长度字段所能表示的最大值为1111,转化为10进制为15,15*32/8 = 60,故报头最大长度为60字节。首部长度也叫数据偏移,是因为首部长度实际上指示了数据区在报文段中的起始偏移值。
4.保留
为以后做打算,现在置为0
5.控制位
1)URG(urgent):紧急指针标志,为1时表示紧急指针有效,告诉系统此报文段中有紧急数据,为0则忽略紧急指针。
2)ACK(acknowledge)