计算机网络知识(上)

一些关于计算机网络的基础知识。

ISO/OSI模型

应用层(http):固定长度的消息头固定组成。

表示层:解决不同系统之间的语法问题。

会话层:建立和管理应用程序间的通信。

传输层(TCP/UDP):解决了主机之间数据传输和质量问题。

网络层(IP):将网络地址翻译成物理地址,数据由发送方路由到接收方。

数据链路层:控制纠错,访问。

物理层:物理机之间的信号传输(比特流)。

TCP三次握手

1、源主机向目标主机发送SYN=1同步信号,seq=x序列号。

2、目标主机向源主机返回ACK=1确认信号,seq=x+1序列号。

3、源主机向目标主机发送ACK=1确认信号,双方进入“ESTABLISHED”状态。

为什么需要三次握手

初始化Number sequence的值。保证应用层接收到的数据不会因为网络传输问题而乱序。

首次握手的隐患

SYN超时。

起因:Server受到Client的SYN,回复SYN-ACK时没有收到ACK确认。

针对SYNFlood的防护

SYN队列满了之后,通过tcp-syncookies参数(目标短裤,源端口,时间戳)回发SYN Cookies。

若为正常,则Client会回发SYN Cookies,直至建立连接。

建立连接后Client故障

保活机制:
向对方发送保活探测报文,尝试次数达到保活探测数仍未收到响应则中断连接。

TCP四次挥手

1、Client发送FIN,关闭Client到Server的数据传送。

2、Server发送ACK。

3、Server发送FIN,关闭Server到Client的数据传送。

4、Client发送ACK。

TIME_WAIT状态

确保有足够的时间收到ACK包。

避免新旧连接混淆。

服务器大量CLOSE_WAIT状态

原因:未及时关闭。

解决方法:检查释放资源的代码。

检查处理请求的线程配置。

Linux命令

netstat:查看系统端口使用情况。

awk:行处理器。