0%

06-网络编程-第一节

一、计算机网络体系结构

因为最开始是为了在军事上防止一次打击就全部毁灭,所以TCP/IP 设计就是为了去中心化。

OSI 七层模型:应(用层)、表(示层)、会(话层)、传(输层)、网(络层)、数(据链路层)、物(理层)

TCP/IP 四层模型: (应用层)、(传输层)、(网络层)、(数据链路层)

二、TCP/IP协议族(上)

我们所说的 TCP/IP 其实是个协议族,并不单单说的 tcp 或者 ip 协议。覆盖最上层的 应用层(HTTP、DNS等)一直到 物理层。

严格来讲,3G、4G、5G 是哪一层?物理层

我们平时发送消息给对方整个过程可以用如下的图表示:

网络传输中的数据

在应用层使用 UDP 自己实现连接和重传,可以加速网络速度,因为系统自带的 TCP 是很保守的。

三、TCP/IP协议族(下)

端口号是用于区分不同的应用的。属于传输层的东西。

TCP 可靠性是怎么保证的?超时重传,应答确认。正是因为设计之初为了保证若干物理线路被摧毁还能保证正常运行,所以相对而言还是挺复杂的。

流量控制:每次高速对方我最多能接收多少数据。

DNS 主要使用 UDP ,但是有时候也使用 TCP

四、三次握手建立连接

建立连接的三次握手:

  1. 客户端发起连接,SYN = 1 ,seq = x ,之后进入 SYN_SENT 状态

  2. 服务端收到后,返回 SYN = 1,ACK = 1,ack = x +1, seq = y ,之后进入 SYN_RCVD 状态

  3. 客户端收到后,返回 ACK = 1,ack = y + 1,之后客户端进入 ESTABLISHED 状态;服务端收到之后,也进入 ESTABLISHED 状态

其中,大写的 比如 SYN 、ACK 等都表示标记位,小写的如 ack、seq 等表示值

面试官:为什么是 3 次,不是 2 次或者 4 次?

首先回复三次握手的过程。之后,给出答案:通知对方序列号,并且确保对方已经收到。

SYN 洪泛攻击,虚假ip只发送第一次 syn 连接,由于服务器收到之后就进入到了 SYN_RCVD 状态,并且回复 ack 数据,但是永远得不到回复;所以解决的方案:1)无效连接的监控和释放 2) 防火墙处理,真正连接后才分配资源

抓包的原理: 操作系统允许你越过传输层和网络层,直接获取到 链路层 原始Socket的值

如果想了解更多 WebSocket 的内容《Html5 Websocket 权威指南》

谢谢你的鼓励