网络知识学习

网络知识学习

OSI网络分层 (7层次)

物理层:

由最早的机器点对点的传输,将数据包装为bit流利用电流的强弱进行数据传输,最终转换为机器码0,1的形式 完成数据传输。

数据链路层:

由于在数据传输过程中,需要保证数据的可靠性和正确性,保证点对点的物理寻址从而确保数据的可靠性,会对数据进行一些加工(解码,编码)来确保数据的正确性。

网络层(IP协议):

由于数据网络越来越复杂,在点对点的传输过程中,需要寻觅到最优的传输路径,可能就需要网络层的支持,网络层主要是控制子网的运行,如逻辑地址,分组传输,路由选择等。

传输层:

(TCP/UDP)(1500字节的数据包无法支持,需要拆分,并数据重组),在网络传输过程中,数据传输可能会失败,这一层主要确保数据传输的稳定性和可靠性,如网络数据的分段(segment)。

会话层:

当有了网络模型之后为了便于管理,路由,打包的过程就有了会话层,他会自动的对数据进行打包,自动路由地址

表现层:

解决了不同操作系统之间的语法问题,跨操作系统的运行

应用层(HTTP)

定义了数据的格式,字节位数,通用的解码,编码规范,让数据传输真正有用。

OSI的实现TCP/TP协议

TCP协议

TCP三次握手
第一次握手:客户端向服务器发送一个SYN包,发送seq=x,等待服务器接口处于SYN-SEND 状态
第二次握手:服务器收到客户端的SYN包,发送一个[SYN+ACK]包 并确认ack=x+1 发送一个自己的seq=j 等待客户端建立连接,处于SYN_RECIVE状态
第三次握手:客户端收到服务器的[SYN+ACK] 需要确认自己收到,即发送自己的ACK包将服务器的seq+1 发送 ack=j+1 seq=x+1的包 此时建立连接,客户端和服务器进入ESTABLISHED状态
为什么要进行三次握手

为了初始化对应服务器和客户端的Seqnumeber的数值,作为以后数据通信的序号,用此序列号拼接数据
(服务器发送一个100字节的数据,seq为200 则下一次确认后 发送的ack= 100+200)

第一次握手隐患

当客户端发送SYN 包之后 服务器发送SYN+ACK包 但是一直没有接收到客户端的回应,此时服务器就处于假死状态既没有断开连接也没有连接成功,但服务器会重试(linux重试5次,1,2,4,8,16),重试有时间间隔,但与一些攻击者就重复利用这个隐患一直发送SYN包直接下线,导致服务器的连接队列打满,无法连接其他请求。服务器会传输过程中携带一个cookie 这时候只有客户端知道这个cookie 即使攻击者将连接对接打满了 也可以通过这个cookie直接连接。

TCP 四次挥手

四次挥手流程

第一次挥手:客户端发送FIN包请求终止连接,此时seq=x,客户端进入FIN-WAIT1
第二次挥手: 服务器接收到FIN包后发送ACK包ack=x+1 seq=y 服务器进行CLOSE-WRITE
第三次挥手:服务器进入CLOSE-WATI状态可能还需要给客户端发送一些数据,所以有了第三次挥手,时间为close-wirte的时间等再次发送一个FIN+ACK 的包 其中 seq=z ack=x+1
第四次挥手:客户端接收到FIN+ACK的包之后会发送seq=x+1,ack=z+1的包服务器将结束连接此时客户端进入TIME-WAIT。

客户端进入TIME-WAIT不直接关闭

这里需要注意客户端结束后不会立刻断开连接需要等待2个报文的时间才会结束连接。

  1. 客户端需要确保服务器接收到的自己最后的ACK包加入没有收到服务器就会重新发送连接,这时候等待2报文时间就是为了防止被动接受方没有收到自己发送的ACK包
  2. 有一些路由器缓存IP路由包,避免和其他连接混合在一起导致数据错误。
为什么要进行四次挥手

发送方和接受方都需要收到FIN和ACK的报文,所以每次都需要两次 一来一回看上去就成了四次挥手。

TCP滑动窗口
RTT和RTO

RTT:发送一个数据到接受到这个数据的时间
RTO(重传时间间隔):动态计算,当传输一个报文会启动一个重传计时器,动态计算重传时间。

TCP使用滑动窗口控制数据流量和乱序重排

保证TCP可靠性
保证TCP流控属性

UDP协议

1.面向非链接,不维护连接状态,支持同时向多个客户端传输相同信息。
2.数据包比较小,只有8个字节,额外开销小
3.吞吐量比较大,只受服务器限制,网络限制
4.面向报文,不处理报文拆分合并等。

HTTP协议

1.无状态的(引入cookie,session让其有状态)
2.无连接
3.简单快速,灵活
4.支持客户/服务器模式
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值