网络:基础

前言

  • 计算机网络是程序员,特别是服务端程序员必须要掌握的技能
  • 服务端的工作主要是完成数据存储请求验证交互通讯
    • 数据存储:业务服务器和数据服务器通讯大都在内网环境,更多关注的是数据安全、容灾、效率这些问题
    • 请求验证:客户端和服务端的通讯内容,通过服务端的配置数据、规则计算、安全认证等验证数据即可,基本都是业务服务器进程内的工作,关注处理的并发量、处理的效率、处理的安全性
    • 交互通讯:包括客户端和服务端的通讯、客户端和客户端通讯但是需要服务端中介转发,关注通讯的稳定、可靠,通讯的安全,这里涉及的内容很杂,因为客户端本身需要经过一个复杂的公网环境才能和服务端交互,交互的链路是无法预知和预估的,也就更容易出现奇奇怪怪的问题
  • 关于服务端程序本身,关注的问题也基本是围绕内存、网络相关的问题
  • 希望逐步整理网上不错的内容和自己的理解、实验,整理网络相关的知识
  • 几种常用的协议:ICMP、UDP、TCP、HTTP
  • 一些常见的概念:
    • 物理设备:路由、NAT、网卡、虚拟网卡
    • 判定参考:ICMP、ping、traceroute
    • 行为状态:三次握手、四次挥手、半连接队列、全连接队列、SYN重传、FIN、close_wait、time_wait
    • 数据控制:滑动窗口、拥塞控制、MTU、MSS、SACK、DSACK、RTO、keepalive

网络各层职责和协议

  • 上面图包含了7层模型,标准的OSI模型

  • 这其中 表示层会话层已被弃用,我们现在听到的主要是5层模型

  • 作为使用者,主要关心的是网络通信(TCP/IP)相关的内容,把数据链路层物理层合并命名为网络接口层,就是常说的4层模型

  • 几乎所有的网络上来就是分层概念,对于应用者,可能只是用到ICMP、TCP、UDP

  • 之所以要关心分层概念,主要是在网络出问题的时候,可以定位出是那一层出的问题,并依此考虑应该如何解决

  • 如果不了解分层,假设客户端和服务端通讯TCP异常丢包,而且是那种看似随机的丢包,甚至一端被RST强行关闭了,这种就无法快速响应到说重点从那些方面查这种问题。

参考

------ 本文结束 ------
------ 版权声明:转载请注明出处 ------