TCP协议栈知识实例
来源:互联网 发布:深圳水务集团网络投诉 编辑:程序博客网 时间:2024/05/28 15:17
本文会介绍TCP协议知识,并介绍wireshark中相关知识,HTTPS也会提及
众所周知,tcp是面向连接的协议,在开始传输信息前需要建立一个虚拟链路
何为虚拟链路 物理链路就是切实存在的,比如网线,电流(信息)在其中传输。 虚拟链路是一条虚拟的,但是会对tcp传输起到重要作用的。
结合图片中的第一个tcp请求,是客户端对服务端发起的SYN包
SYN(synchronous)的请求中Info的一些信息的含义
57820 → 443 [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 bytesWS=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/
- TCP协议栈知识实例
- tcp/ip协议栈知识
- TCP协议相关知识
- tcp协议 编程实例
- TCP/IP协议相关知识
- TCP协议内部知识介绍
- 浅谈TCP/IP协议栈(一)入门知识
- TCP协议三次握手实例
- 实例开发聊天室 tcp协议
- TCP协议和UDP协议简单实例
- 结合Wireshark捕获分组深入理解TCP/IP协议栈之TCP协议(TCP报文格式+三次握手实例)
- 深入理解TCP/IP协议栈之TCP协议(TCP报文格式+三次握手+四次挥手实例)
- 结合Wireshark捕获分组深入理解TCP/IP协议栈之TCP协议(TCP报文格式+三次握手实例)
- 结合Wireshark捕获分组深入理解TCP/IP协议栈之TCP协议(TCP报文格式+三次握手实例)
- 结合Wireshark捕获分组深入理解TCP/IP协议栈之TCP协议(TCP报文格式+三次握手实例)
- 结合Wireshark捕获分组深入理解TCP/IP协议栈之TCP协议(TCP报文格式+三次握手实例)
- 结合Wireshark捕获分组深入理解TCP/IP协议栈之TCP协议(TCP报文格式+三次握手实例)
- 结合Wireshark捕获分组深入理解TCP/IP协议栈之TCP协议(TCP报文格式+三次握手实例)
- .NET 程序集编程(五)
- json字符串转换为JSONObject和JSONArray
- SpringMVC与Struts2区别与比较总结
- maven包含Main类的项目打包
- sqlServer
- TCP协议栈知识实例
- 函数
- 【noip2007】树网的核
- DjVu格式的两大优势?
- Linux下切换Python版本
- Java设计模式(四) 观察者模式
- Spring+SpringMVC+MyBatis+easyUI整合基础篇(三)搭建步骤
- Android7 imx6 Selinux
- 关于const的使用