categories: network


计网常识

1 网络基础知识讲解

主讲过程

OSI 七层模型

物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
讲了一下各个层的功能,可以重点听一下,把握重点
image.png
并不是标准、只是一个概念框架

TCP/IP

image.png
先自上而下,后自下而上处理数据头部
image.png

2 TCP的三次握手_1

主讲过程

说说 TCP 的三次握手

IP 数据包是不可靠的,需要其上层来进行保证
TCP 有以下简单的特点

  • 面向连接的、可靠的、基于字节流的传输层通信协议
  • 将应用层的数据流分割成报文段并发送给目标节点的 TCP 层
  • 数据包都有序号,对方收到则发送 ACK 确认,未收到则重传
  • 使用校验和来检验数据在传输过程中是否有误

TCP 报文头需要自己看一下,大概了解其内容
TCP Flags

  • URG:紧急指针标志
  • ACK:确认序号标志
  • PSH:push 标志
  • RST:重置连接标志
  • SYN:同步序号,用于建立连接过程
  • FIN:finish 标志,用于释放连接

了解三次握手的图片,过程要详细了解
image.png

3 TCP的三次握手_2

主讲过程

“握手”是为了建立连接,TCP 三次握手的流程如下

在 TCP/IP 协议中,TCP 协议提供可靠的连接服务,采用三次握手建立一个连接。

第一次握手:建立连接时,客户端发送 SYN 包(syn=j)到服务器,并进入 SYN_SEND 状态,等待服务器确认
第二次握手:服务器收到 SYN 包,必须确认客户的SYN (ack=j+1),同时自己也发送一个 SYN 包(syn=k),即 SYN+ACK 包,此时服务器进入 SYN_RECV 状态
第三次握手:客户端收到服务器的 SYN+ACK 包,向服务器发送确认包 ACK(ack=k+1),此包发送完毕,客户端和服务器进入 ESTABLISHED 状态,完成三次握手

注意:千万不要使用大白话来阐述这个概念。

为什么需要三次握手才能建立其连接

为了初始化 Sequence Number 的初始值,保证用来发送和接受的数据都能够有序,拼装时也不会因为网络质量不好等原因,发生别的意外

首次握手的隐患—-SYN 超时

  • Server 收到 Client 的 SYN,回复 SYN+ACK 后未收到 ACK 确认(处于中间状态)
  • Server 端不断重试直至超时,Linux 默认等待 63 秒才断开连接

针对 SYN Flood 的防护措施

  • SYN 队列满后,通过 tcp_syncookies 参数回发 SYN Cookie
  • 若为正常连接则 Client 会回发 SYN Cookies ,直接建立连接

保活机制

  • 向对方发送保活探测报文,如果未收到响应则继续发送
  • 尝试次数达到保活探测数仍未收到响应则中断连接