tcpip的网络层协议(IP计算机网络底层原理)

主要内容

1.从一个HTTP请求来看网络分层原理

2.TCP/IP协议底层知识

3.TCP三次握手四次挥手

4.HTTPS安全加密通道原理剖析

从一个HTTP请求来看网络分层原理

1.复杂的网络

tcpip的网络层协议(IP计算机网络底层原理)(1)

请求过程中可能出现数据丢包,出现数据丢包会有重传,可能会出现数据重复的问题。同时可能由于网络或者设备的问题出现数据丢失,所以会有数据完整性校验

2.为了简化网络的复杂度,网络通信的不同方面被分解为多层次结构,每一层只与紧挨着的上层或者下层进行交互,将网络分层,这样就可以修改,甚至替换某一层的软件,只要层与层之间的接口保持不变,就不会影响到其他层。

  • ISO(open system interconnection reference model):开放系统互联参考模型
  • TCP/IP 协议簇

tcpip的网络层协议(IP计算机网络底层原理)(2)

tcpip的网络层协议(IP计算机网络底层原理)(3)

3.一个HTTP请求的分层解析流程

tcpip的网络层协议(IP计算机网络底层原理)(4)

HTTP通过域名发送一个请求,其中部署应用服务器时,域名是维护在运营商的DNS服务器上。开始时客户机直接通过域名是无法访问到应用服务器的,因为客户机上并没有域名的解析地址,当第一次在浏览器中输入域名地址访问时,会先到本地缓存中去查找,如果本地缓存有相应的域名和IP地址信息,则直接取出地址去进行下一步操作;如果缓存中没有,则会去本机的host文件中去找,如果都没有的话,它会去构造一个DNS的请求包,然后通过内核去进行传输层API相关的调用

TCP(Transmission Control Protocol):面向连接的,可靠的,基于字节流的传输层通信协议

特点:

  • 基于连接的:数据传输之前需要建立连接
  • 全双工的:双向传输
  • 字节流:不限制数据大小,打包成报文段,保证有序接收,重复报文自动丢弃
  • 流量缓冲:解决双方处理能力的不匹配
  • 可靠的传输服务:保证可达,丢包时通过重发机制实现可靠性
  • 拥塞控制:防止网络出现恶意拥塞

TCP连接管理

1. TCP连接:四元组【源地址,源端口,目的地址,目的端口】

tcpip的网络层协议(IP计算机网络底层原理)(5)

2. 确立连接:TCP三次握手

a. 同步通信双方初始序列号(ISN,initial sequence number)

b. 协商TCP通信参数(MSS,窗口信息,指定校验和算法)

tcpip的网络层协议(IP计算机网络底层原理)(6)

TCP报文格式:前五行是TCP报文必填字段;Options是可选项,Data数据

Source port:源端口,一般是随机生成的没有被占用的端口

Dest port:目的端口

Sequence number:为保证TCP连接可靠性必要的一个字段,一个随机生成的序列号

Acknowledgment number:应答号

Header length:头部长度

Unused:未使用的字段

CWR/ECE/URG/ACK/PSH/RST/SYN/FIN:标记位;所谓标记位,比如建立TCP连接时,同步序列号时,SYN会置为1,表示是一个TCP报文;又比如要关闭连接时,FIN标记位会置为1,表示是一个关闭连接的一个请求;ACK表示它是一个响应的报文

receive window:接收窗口的大小

Internet checksum:数据完整性校验的字段

Urgent data pointer:紧急数据指针

如何进行握手?

tcpip的网络层协议(IP计算机网络底层原理)(7)

tcpip的网络层协议(IP计算机网络底层原理)(8)

192.168.109.1:54875为客户机 > 表示向服务器192.168.109.200:80发送SYN,建立连接的请求(192.168.109.200 http,http为80,80是http的默认端口)

Flags:表示标志,S为SYN,. 点位ACK;

如何处理三次握手?

tcpip的网络层协议(IP计算机网络底层原理)(9)

TCP四次挥手

tcpip的网络层协议(IP计算机网络底层原理)(10)

A:发送FIN数据包,代表A不再发送数据

B:收到请求,开始应答,避免A重新发送FIN重试(应答机制)

B:处理完数据之后关闭,关闭连接,及发送FIN请求

A:收到请求后发送ACK应答,B服务可以释放连接

等待2MSL(maximum segment lifetime,报文最长存活时间)后释放连接

1.防止报文丢失,导致B重复发送FIN(如果没有2MSL,立即closed,如果应答的ACK丢包导致服务端没有收到ACK应答,那么服务端会重复发送FIN请求)

2.防止滞留在网络中的报文,对新建立的连接造成数据扰乱(如果立即closed,那么客户端响应的端口会被释放,释放的端口如果被另外的程序立即占用了,那么万一网络中还有正在传输的报文,那么就会造成传输数据的错乱)

字节流的协议

TCP把应用交付的数据仅仅看成是一连串的无结构的字节流,TCP并不知道字节流的含义,TCP并不关心应用程序一次将多大的报文发送到TCP的缓存中,而是根据对方给出的窗口值和当前网络拥堵的程度来决定一个报文段应该包含多少个字节。

TCP最大的网络报文大小:

Mss:Max Segment Size,默认536byte实际数据

tcpip的网络层协议(IP计算机网络底层原理)(11)

数据可靠性传输

停止等待协议

tcpip的网络层协议(IP计算机网络底层原理)(12)

重传机制

1.ack报文丢失

tcpip的网络层协议(IP计算机网络底层原理)(13)

2.请求报文丢失

tcpip的网络层协议(IP计算机网络底层原理)(14)

滑动窗口协议与累计确认(延时ack)

滑动窗口大小通过tcp三次握手和对端协商,且受网络状况影响

tcpip的网络层协议(IP计算机网络底层原理)(15)

tcpip的网络层协议(IP计算机网络底层原理)(16)

HTTP

1.HTTPS协议

由于HTTP天生明文"的特点,整个传输过程完全透明,任何人都能够在链路中截获、修改或者伪造请求/响应报文,数据不具有可信性。

因此就诞生了为安全而生的 Https协议。使用Https时,所有的HTTP请求和响应在发送到网络之前,都要进行加密。

tcpip的网络层协议(IP计算机网络底层原理)(17)

2.SSL/TSL

SSL即安全套接层( Secure Sockets Layer),由网景公司于1994年发明, IETF在1999年把它改名为TLS(传输层安全, Transport Layer Security),正式标准化,到今天TLS已经发展出了主流的三个版本,分别是2006年的1.1、2008年的1.2,2018的1.3,每个新版本都紧跟密码学的发展和互联网的现状,持续强化安全和性能,已经成为了信息安全领域中的权威标准。

摘要算法

摘要算法能够把任意长度的数据“压缩”成固定长度、而且独一无二的“摘要”字符串,就好像是给这段数据生成了一个数字“指纹"。任意微小的数据差异,都可以生成完全不同的摘要。所以可以通过把明文信息的摘要和明文一起加密进行传输,数据传输到对方之后再进行解密,重新对数据进行摘要,再比对就能发现数据有没有被篡改。这样就保证了数据的完整性

tcpip的网络层协议(IP计算机网络底层原理)(18)

加密算法

对称密钥加密算法:编、解码使用相同密钥的算法,如(AES, RC4, Chacha20)。

非对称密钥加密算法:它有两个密钥,一个叫“公钥”,一个叫“私钥”。两个密钥是不同的,公钥可以公开给任何人使用,而私钥必须严格保密。非对称加密可以解决“密钥交换”的问题。网站秘密保管私钥,在网上随意分发公钥,你想要登录网站只要用公钥加密就行了,密文只能由私钥持有者才能解密。而黑客因为没有私钥,所以就无法破解密文。非对称密钥加密系统通常需要大量的数学运算,比较慢。如(DH、DSA、RSA、ECC)

tcpip的网络层协议(IP计算机网络底层原理)(19)

非对称加密

两套密钥:

公钥:随意发布

私钥:服务器保存

使用公钥加密的数据,只有私钥能解

使用私钥加密的数据,只有公钥能解

TLS里使用的混合加密方式,即把对称加密和非对称加密结合起来呢,两者互相取长补短,即能高效地加密解密,又能安全地密钥交换。大致流程如下:

1.通信开始的时候使用非对称算法如RSA, ECDHE先解决密钥交换的问题

tcpip的网络层协议(IP计算机网络底层原理)(20)

2用随机数产生对称算法使用的"会话密钥”,再用公钥加密。会话密钥很短,所以即便使用非对称加密算法也可以很快完成加解密。

tcpip的网络层协议(IP计算机网络底层原理)(21)

3对方拿到密文后用私钥解密,取出会话密钥。完成对称密钥的安全交换,后续就使用对称算法发完成数据交换

tcpip的网络层协议(IP计算机网络底层原理)(22)

身份验证

数字证书组成:

CA信息,公钥用户信息,公钥,权威机构的签名,有效期

数字证书作用:

1通过数字证书向浏览器证明身份

2数字证书里面包含了公钥

数字证书的申请和验证

如何申请

1.生成自己的公钥和私钥,服务器自己保留私钥

2.向CA机构提交公钥,公司,域名信息等待认证

3.CA机构通过线上,线下多种途径验证你提交信息的真实性,合法性

4.信息审核通过,CA机构则会向你签发认证的数字证书,包含了公钥,组织信息,CA信息,有效时间,证书序列号,签名算法,同时生成一个签名;签名步骤:hash(你用于申请证书所提交的明文信息)=信息摘要; CA再使用CA机构的私钥 对信息摘要进行加密,密文就是证书的数字签名

浏览器如何验证呢?

有了CA签名过的数字证书,当浏览器访问服务器时,服务器会返回数字证书给浏览器。浏览器收到证书后会对数字证书进行验证。

首先浏览器读取证书中相关的明文信息,采用CA签名时相同的hash函数计算得到信息摘要A,再利用对应的CA公钥解密数字签名数据得到信息摘要B,如果摘要A和摘要B一致,则可以确认证书时合法的

tcpip的网络层协议(IP计算机网络底层原理)(23)

tcpip的网络层协议(IP计算机网络底层原理)(24)

tcpip的网络层协议(IP计算机网络底层原理)(25)

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页