提示:目录自动生成
前言
网络编程相关知识点
正文
一、字节序
1.网络字节序
大端模式,低地址存高字节
2.本地字节序
小端模式,低地址存低字节
二、TCP协议
1.三次握手
- 主动发起连接端,发送 SYN 标志位,请求建立连接。携带序号,数据字节大小 (0),滑动窗口大小
- 被动接受端,发送 ACK 应答,SYN 标志。携带序号,数据字节大小 (0),确认序号,滑动窗口大小
- 主动发起连接端,发送 ACK 应答,携带确认序号
tcp第三次握手失败会出现什么: 如果此时 ACK 在网络中丢失,过了超时计时器后,那么 Server 端会重新发送 SYN+ACK 包。重传次数根据 /proc/sys/net/ipv4/tcp_synack_retries 来指定,默认是 5 次。如果重传指定次数到了后,仍然未收到 ACK 应答,那么一段时间后,Server 自动关闭这个连接。但是 Client 认为这个连接已经建立,如果 Client 端向 Server 写数据,Server 端将以 RST 包响应,方能感知到 Server 的错误。当失败时服务器并不会重传 ack 报文,而是直接发送 RTS 报文段,进入 CLOSED 状态。 这样做的目的是为了防止 SYN 洪泛攻击。
2.四次挥手
- 主动关闭连接端,发送 FIN,
- 被动关闭端,发送 ACK。 处于半关闭
- 被动关闭端,发送 FIN
- 主动关闭端,发送 ACK 应答。此时连接全部关闭
三、长连接与短连接
1.长连接
连接 -> 传输数据 -> 保持连接 -> 传输数据 -> …………-> 直到一方关闭连接,多是客户端关闭连接 长连接指建立 SOCKET 连接后不管是否使用都保持连接,但安全性较差。
- 优点
长连接可以省去较多的 tcp建立/关闭的操作,减少浪费,节省时间,对于频繁请求资源的客户,较适用于长连接; - 缺点
随着客户的越来越多,server 早晚会有扛不住的一天,这时需要采取一些策略,如关闭一些长时间不读写操作的连接,这样可以避免一些恶意连接导致 server 端服务受损,如果条件再允许,就可以以客户端为颗粒度,限制每个客户端的最大连接数
2.短连接
连接 -> 传输数据 -> 关闭连接 比如 HTTP(1.1之后默认长连接) 是无状态的的短链接,浏览器和服务器每进行一次 HTTP 操作,就建立一次连接,但任务结束就中断连接。
- 优点
短连接对于服务器来说较为简单,存在的连接都是有用的连接,不需要额外的控制 - 缺点
客户端连接频繁,会在 tcp 的建立和关闭上浪费时间。
总结
总结: 未完待续
|