TCP协议栈知识实例

来源:互联网 发布:深圳水务集团网络投诉 编辑:程序博客网 时间:2024/05/28 15:17

本文会介绍TCP协议知识,并介绍wireshark中相关知识,HTTPS也会提及

这里写图片描述

众所周知,tcp是面向连接的协议,在开始传输信息前需要建立一个虚拟链路

何为虚拟链路 物理链路就是切实存在的,比如网线,电流(信息)在其中传输。 虚拟链路是一条虚拟的,但是会对tcp传输起到重要作用的。

结合图片中的第一个tcp请求,是客户端对服务端发起的SYN包

SYN(synchronous)的请求中Info的一些信息的含义

57820443 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 WS=256 SACK_PERM=1

源端口 57820

Seq=0 sequence num 序号
Win=64240 Window size value: 64240
Len=
MSS=1460 Maximum segment size: 1460 bytes

WS=256 窗口扩大选项(Window scaling) TCP报文的窗口大小字段占16位,即最大值是65535,但随着时延和带宽比较大的通信产生(如卫星通信),需要更大的窗口满足性能和吞吐率,这就是窗口扩大选项存在的意义

服务端收到请求后,返回一个标志为SYN+ACK包。
这里可以分开看ACK标签表明服务端收到客户端的请求,并且做好连接准备,开始分配资源。状态为SYN_RECV(这也是可以进行syn flood攻击的原因)
SYN标签相当于此时服务端对客户端的请求连接。

第三次握手的ACK包则是客户端对服务器说已经准备好了。此时客户端状态establishment。

HTTPS使用的TLSv1.2

TLS的历史
1995: SSL 2.0, 由Netscape提出,这个版本由于设计缺陷,并不安全,很快被发现有严重漏洞,已经废弃。
1996: SSL 3.0. 写成RFC,开始流行。目前(2015年)已经不安全,必须禁用。
1999: TLS 1.0. 互联网标准化组织ISOC接替NetScape公司,发布了SSL的升级版TLS 1.0版.
2006: TLS 1.1. 作为 RFC 4346 发布。主要fix了CBC模式相关的如BEAST攻击等漏洞
2008: TLS 1.2. 作为RFC 5246 发布 。增进安全性。目前(2015年)应该主要部署的版本,请确保你使用的是这个版本
2015之后: TLS 1.3,还在制订中,支持0-rtt,大幅增进安全性,砍掉了aead之外的加密方式
由于SSL的2个版本都已经退出历史舞台了,所以本文后面只用TLS这个名字。 读者应该明白,一般所说的SSL就是TLS。

在三次握手之后,如果是应用层是HTTP协议,此时可能已经进行了数据传输,而TLS协议为了确保HTTP传输的安全性,肯定是在HTTP信息开始之前连接的。

这里看到客户端对服务端,Client Hello.同时客户端发送了一组自己支持的加密算法给服务端,包含在字段 signature_algorithms中。

服务端回复给客户端server hello

参考资料

https通信干了些什么https://www.guokr.com/post/114121/

阅读全文
0 0