握手协议

TCP报文段的首部格式

隐身守侯 提交于 2020-02-19 17:59:57
TCP报文段的首部格式 1.1.首部字段详解 TCP首部包括20字节的固定首部部分及长度可变的其他选项,所以TCP首部长度可变。20个字节又分为5部分,每部分4个字节32位,如图中的5行,每行表示32位。 在 传输层 ,TCP报文段包括:TCP首部和TCP数据部分;在 网络层 ,TCP报文段成为IP数据部分,加上IP首部组成IP数据报;在 数据链路层 ,还要在IP数据报前面加上数据链路层的首部。 源端口和目的端口 字段——各占 2 字节(16位)。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。 序号 字段——占 4 字节。TCP 连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。比如分组的第一个数据包由文件的1~4个字节数据组成,那么该数据包所添加的序号就是1,同理第二个数据包由文件的5~9个字节数据组成,那么该数据包所添加的序号就是5; 确认号 字段——占 4 字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。比如接收端收到由文件1~4个字节数据+TCP首部组成的数据包后,删除首部提取1~4个字节数据,返回的确认号为5,即告诉发送端下一次应该发送文件的第5个字节及其之后字节组成的数据包过来。 数据偏移 (即首部长度)——占 4 位,它指出 TCP 报文段的数据起始处距离 TCP

TCP/UDP协议

本秂侑毒 提交于 2020-02-14 00:17:20
文章目录 1.OSI网络七层模型 1.1各层的主要功能 低三层 承上启下作用层 高三层 2.传输控制协议TCP 2.1 TCP握手机制 2.1.1三次握手过程 Ⅰ.为什么需要三次握手,两次不行吗? Ⅱ.什么是半连接队列? Ⅲ.ISN(Initial Sequence Number)是固定的吗? Ⅳ:三次握手过程中可以携带数据吗? Ⅴ. SYN攻击是什么? 2.1.2 四次挥手过程 Ⅰ. 挥手为什么需要四次? Ⅱ.四次挥手释放连接时,等待2MSL的意义? Ⅲ.为什么TIME_WAIT状态需要经过2MSL才能返回到CLOSE状态? 3.用户数据报协议 UDP 3.1开发应用人员在UDP上构建应用时关注的点 3.2 UDP和TCP比较 3.3什么情况下会用到UDP? 4.Socket编程 1.OSI网络七层模型 为使不同计算机厂商的计算机能够互相通信,以便在更大的范围内建立计算机网络,有必要建立一个国际范围的网络体系结构标准。 分层的目的:为了让每一层的开发人员、系统设计不需要再关心整个的网络层次。比如说做网线或者光纤的厂商,只需要关心物理层就行。 1.1各层的主要功能 低三层 物理层:使原始的数据比特流能在物理介质上传输。 数据链路层:通过校验、确认、和反馈重发等手段,形成稳定的数据链路(01010101)。 网络层:进行路由选择和流量控制。(IP协议) 承上启下作用层 传输层

HTTPS原理01 -- SSL/TLS介绍

时光毁灭记忆、已成空白 提交于 2020-02-05 05:20:29
https=http+ssl 顾名思义,https是在http的基础上加上了SSL保护壳,信息的加密过程就是在SSL中完成的 SSL证书的定义:SSL证书是由专门的权威的数字证书颁发机构在验证一个域名的信息之后所发行的数字网络证书,它可以很好地维护网络信息的安全,防止这些信息被第三方所截取或是窃听。 ssl认证指的是客户端到服务器端的认证,它主要是提供对用户以及服务器的认证,对传送的数据进行加密和隐藏,它能够确保数据在传送过程当中不被改变,对于数据的加密性、数据的完整性有一定保障。 https ssl证书颁发后都有一个有效期。有时证书没过期都会出现无效的情况,那可能是电脑系统的时间不对会导致证书过期,因为https ssl证书颁发都有颁发日期和截止日期的。电脑系统当中的时间在证书有效时间之外,就有可能导致浏览器提示网站安全证书过期。 关于SSL证书原理,其实在一个网站部署了SSL证书之后,就相当于为这个网址配置两把密钥,一把叫做公钥,另一把叫做私钥。公钥的作用就是在用户将自己的信息留在这个网站时为这些信息加锁的钥匙,加了锁之后,这些信息就不能被轻易的读取,除非有专门的钥匙打开。而这把打开这个锁的钥匙,就是另一把密钥,也就是私钥。只有这把对应的私钥才可以打开公钥部下的锁,因此在这两把密钥的作用下,可以使客户的信息数据在网站中安全的传入并安全的浏览,不会被他人截取。 一、作用

HTTPS详解二:SSL / TLS 工作原理和详细握手过程

蹲街弑〆低调 提交于 2020-02-02 13:37:24
HTTPS 详解一:附带最精美详尽的 HTTPS 原理图 HTTPS详解二:SSL / TLS 工作原理和详细握手过程 在上篇文章 HTTPS详解一 中,我已经为大家介绍了 HTTPS 的详细原理和通信流程,但总感觉少了点什么,应该是少了对安全层的针对性介绍,那么这篇文章就算是对 HTTPS 详解一 的补充吧。还记得这张图吧。 HTTPS 和 HTTP的区别 显然,HTTPS 相比 HTTP最大的不同就是多了一层 SSL (Secure Sockets Layer 安全套接层)或 TLS (Transport Layer Security 安全传输层协议)。有了这个安全层,就确保了互联网上通信双方的通信安全,那么这个安全层是怎么工作的,SSL / TLS 握手过程又是怎样的呢?本文将对这些问题一一解答。 1、SSL / TLS 以及 SSL / TLS 握手的概念 SSL 和 TLS 协议可以为通信双方提供识别和认证通道,从而保证通信的机密性和数据完整性。TLS 协议是从Netscape SSL 3.0协议演变而来的,不过这两种协议并不兼容,SSL 已经被 TLS 取代,所以下文就以 SSL 指代安全层。 TLS 握手是启动 HTTPS 通信的过程,类似于 TCP 建立连接时的三次握手。 在 TLS 握手的过程中,通信双方交换消息以相互验证,相互确认

Fiddler抓取https设置及其原理

ⅰ亾dé卋堺 提交于 2020-02-01 07:31:17
Fiddler抓取https设置及其原理 2018-02-02 目录 1 HTTPS握手过程 2 Fiddler抓取HTTPS过程 3 Fiddler抓取HTTPS设置 参考 数字签名是什么? 1 HTTPS握手过程 HTTPS 并非是应用层的一种新协议。只是 HTTP 通信接口部分用 SSL (安全套接字层)和TLS (安全传输层协议)代替而已。即添加了加密及认证机制的 HTTP 称为 HTTPS ( HTTP Secure )。 HTTPS = HTTP + 认证 + 加密 + 完整性保护 握手过程如下: 第一步:客户端发起明文请求:将自己支持的一套加密规则、以及一个随机数(Random_C)发送给服务器 第二步:服务器选出一组 加密规则和hash算法 ,并将自己的身份信息以证书(CA:包含网站地址、加密公钥、证书颁发机构等信息)和一个随机数(Random_S)发给客户端 第三步:客户端接到服务器的响应 验证证书的合法性(颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致等)。如果证书受信任,则浏览器栏里面会显示一个小锁头,否则会给出证书不受信的提示。 如果证书受信任,或者是用户接受了不受信的证书,客户端做以下事情: 生成密码:浏览器会生成一串随机数的密码( Pre_master ),并用CA证书里的公钥加密(enc_pre_master),用于传给服务器。

c++ WebSocket Secure服务器(wss服务器)

时光怂恿深爱的人放手 提交于 2020-01-21 05:41:39
做h5游戏,之前是自己写的epoll网络通信,所以开始项目的时候都没有多想就直接自己写了一个websocket网络,而不是使用第三方的ws库。一直用都没有出现问题,但是项目上线前一周前端对接sdk的时候说平台只支持https不支持http,所以后端必须的使用wss通信,惊闻这个消息的时候已经周四了,离上线还有三天时间。想着如果用完全不了解的第三方库还不知道会出现什么问题,而且第三方库引入项目估计网络层全部都是修改,动静太大,时间上来不及,考虑之后还是决定自己写,自己用c++和openssl只用了一天时间就实现了,最后拿到线上也没有出现任何问题。下面简单介绍下wss的相关处理方式。wss其实就是在ws的基础上增加了一层ssl封装,所以听起来麻烦,真正实现其实不难。 首先分配和初始化服务器上下文句柄,代码如下: bool WSSSocketThread::Init() { SSL_library_init();//初始化库 SSL_load_error_strings();//加载错误信息 m_ctx = SSL_CTX_new(SSLv23_method());//SSLv23_server_method or SSLv23_client_method if (nullptr == m_ctx) { WRITE_ERROR_LOG("SSL_CTX_new error");

总结HTTPS握手层和加密层

泪湿孤枕 提交于 2020-01-20 19:27:21
前面说过,TLS/SSL协议可以和应用层协议结合,例如HTTP,SMTP和FTP等。提供数据完整性和机密性TLS/SSL协议建立在TCP或UDP之上,应用层协议之下,任何应用层协议使用了TLS,都要先把数据经过TLS/SSL处理。客户端浏览器连接服务器的443端口,发送HTTP数据到TLS/SSL协议,再到传输层TCP处。TLS协议部分有握手层和加密层两部分,握手层在上,加密层在下,握手层负责完成密码套件,也就是使用的加密算法,密钥参数生成和交换,发送证书等,最后完成密钥协商得到预备主密钥,预备主密钥用过密钥衍生算法得到主密钥,之后就可以把这它交给下面的加密层,完成数据加密和解密。加密层的功能顾名思义,在拿到握手层提供的主密钥后,对HTTP数据提供完整性和机密性保证。 握手层和加密层流程 在握手层,负责交换随机数,密钥套件和密钥协商等,无论是RSA还是DH方式,首先都是客户端发送自己支持的密码套件给服务器,服务器从中选择一个密钥套件,完成密码套件的协商,然后服务器端发送自己的证书给客户端进行身份验证,客户端完成身份验证后,可以开始密钥协商。RSA密钥协商,客户端直接把加密后的预备主密钥发送给服务器端,DH密钥协商则先由服务器端发送DH参数和DH公钥给客户端,客户端根据DH参数生成自己的密钥对,再把客户端DH公钥发送给服务器端,完成密钥协商。接下来就可以在通信中进行数据的加密和解密。

SSL/TLS握手过程

雨燕双飞 提交于 2020-01-19 01:50:08
1、握手与密钥协商过程 基于RSA握手和密钥交换的客户端验证服务器为示例详解TLS/SSL握手过程 再看一张手绘时序图 (1).client_hello 客户端发起请求,以明文传输请求信息,包含版本信息,加密套件候选列表,压缩算法候选列表,随机数,扩展字段等信息,相关信息如下: • 支持的最高TSL协议版本version,从低到高依次 SSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2,当前基本不再使用低于 TLSv1 的版本; • 客户端支持的加密套件 cipher suites 列表, 每个加密套件对应前面 TLS 原理中的四个功能的组合:认证算法 Au (身份验证)、密钥交换算法 KeyExchange(密钥协商)、对称加密算法 Enc (信息加密)和信息摘要 Mac(完整性校验); • 支持的压缩算法 compression methods 列表,用于后续的信息压缩传输; • 随机数 random_C,用于后续的密钥的生成; • 扩展字段 extensions,支持协议与算法的相关参数以及其它辅助信息等,常见的 SNI 就属于扩展字段,后续单独讨论该字段作用。 (2).server_hello+server_certificate+sever_hello_done • server_hello, 服务端返回协商的信息结果,包括选择使用的协议版本

Fiddler抓取HTTPS协议

a 夏天 提交于 2020-01-18 15:57:19
HTTPS协议握手过程: 1,客户端明文请求,把自己支持的非对称加密算法(用于使用CA证书公钥加密计算生成协商密钥的随机数per_master)、对称加密算法(用于以后使用协商密钥加密传输内容)、验证数据完整性的HASH算法、随机数Random_C发给服务器。 2,服务器发回客端的明文信息,包含选择一套加密算法、HASH算法、CA证书、随机数Random_S。CA证书中包含服务器地址、公钥、证书颁发机构信息和签名。 3,客户端做五件事:     a)对证书合法性、证书中包含的地址与正在访问的地址是否一致等进行校验;   b)生成一串随机数密码pre_master,并使用服务器选择的非对称加密算法和CA证书里的公钥对pre_master加密,得到enc_pre_master;   c)计算协商密钥enc_key=Func(random_C,random_S,pre_master);   d)使用约定好的HASH验证算法计算握手信息,用协商密钥enc_key及约定好的加密算法对握手消息加密。   e)客户端发送enc_pre_master、同意使用约定的算法和协商密钥通信、加密的握手信息给服务器。 4,服务器收到数据做五件事:   a)用自己的私钥解密enc_pre_master,得到pre_master;   b)计算协商密钥enc_key=Func(random_C,random

HTTPS 原理解析

∥☆過路亽.° 提交于 2020-01-18 07:59:28
HTTPS 原理解析 一 前言   在说HTTPS之前先说说什么是HTTP,HTTP就是我们平时浏览网页时候使用的一种协议。HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全。为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。SSL目前的版本是3.0,被IETF(Internet Engineering Task Force)定义在RFC 6101中,之后IETF对SSL 3.0进行了升级,于是出现了TLS(Transport Layer Security) 1.0,定义在RFC 2246。实际上我们现在的HTTPS都是用的TLS协议,但是由于SSL出现的时间比较早,并且依旧被现在浏览器所支持,因此SSL依然是HTTPS的代名词,但无论是TLS还是SSL都是上个世纪的事情,SSL最后一个版本是3.0,今后TLS将会继承SSL优良血统继续为我们进行加密服务。目前TLS的版本是1.2,定义在RFC 5246中,暂时还没有被广泛的使用 () 概念可参考百科 http://baike.baidu.com/link?url=M8pBu1j_22f0PW6izvAOCTjhepyRcT320U9LDmjyzb586OYS