网络必备知识系列

上一篇分享了Linux的学习经验,今天就来分享下有关网络的一些基础知识,网络对于从事IT行业的人来说,都应该有所了解的,小到自己家中的网络及其相关设备,从网线到交换机到路由器甚至更专业的防火墙以及负载均衡。掌握基本的知识原理,有助于排查自己项目中的网络问题。

目前,我认为作为非网络专业人士,只需要了解网络基础知识,并能解决自己开发或者运维工作中遇到的简单网络问题即可,其余的就可以交给专业网络工程师处理。因为毕竟人的精力有限,事事精通是很难的。

网络协议

有很多人推荐去读《TCP/IP详解》,其实每个人应该按照自己所从事的专业来选择去读,像我并不是网络专业,看了一点就已经有点打瞌睡了,不是不想读,实在是厚厚一本知识点不少啊。而且因为没有太多的实践,理论知识会很快遗忘。所以我基本都是用到才去查看,感觉这样还能记得牢一点。

这里分享常见的网络协议:

HTTP(超文本传输协议):用于在Web浏览器和Web服务器之间传输数据,是Web应用程序的基础协议。

HTTPS(安全超文本传输协议):是HTTP协议的安全版本,通过SSL/TLS协议对通信数据进行加密和认证。

TCP(Transmission Control Protocol):面向连接的传输层协议,在 web 中用于 HTTP 和 WebSocket 的传输。

UDP(User Datagram Protocol):无连接的传输层协议,在 web 中用于 DNS 解析。

FTP(文件传输协议):用于在计算机之间传输文件,支持匿名访问和身份验证。

SMTP(简单邮件传输协议):用于在邮件客户端和邮件服务器之间传输电子邮件。

POP3(邮局协议版本3):用于从邮件服务器上下载邮件,支持邮件的离线阅读。

IMAP(互联网邮件访问协议):用于在邮件客户端和邮件服务器之间传输电子邮件,并支持邮件的在线阅读和管理。

DNS(域名系统):用于将域名转换成IP地址,以便计算机能够互相通信。

ICMP(Internet控制消息协议):用于在网络中传输控制信息和错误消息,如ping命令就是基于ICMP协议。

WebSocket:一种用于 web 的网络通信协议,能够实现 web 应用的实时通信。常用于即时通讯等需要实时交互的 web 应用。

SSH(安全外壳协议):用于在网络中安全地传输数据,支持加密和身份验证。

网络模型

1. OSI七层模型:是ISO制定的网络互连模型,由物理层、数据链路层、网络层、传输层、会话层、表示层、应用层7个层次组成。
- 物理层:定义传输介质和信号的电气接口特性。
- 数据链路层:定义在直接相连网络设备上传输的数据帧格式和验证机制。
- 网络层:定义数据在可扩展子网上传输的路径选择、逻辑地址和路由策略。
- 传输层:定义网络端对端的数据传输服务,包含可靠交付和错误恢复机制。
- 会话层:利用传输层服务实现会话连接,管理会话初始、终止及维持。
- 表示层:提供数据在网络上传输的编码解码方式,包含数据压缩、加密解密等机制。
- 应用层:提供网络应用服务,包含文件传输、电子邮件、数据库访问及远程登录等网络应用。

2. TCP/IP模型:由物理层、数据链路层、网络互连层、传输层、应用层5个层次组成。是实际应用中最为广泛的网络模型。
- 物理层和数据链路层:与OSI模型对应层次的功能相同。 
- 网络互连层: IP协议,负责网间的数据传输。相当于OSI模型的网络层、传输层和部分会话层。
- 传输层:TCP和UDP协议,提供端对端的传输服务。
- 应用层:各种应用层协议,如HTTP、FTP、SMTP等对应于OSI模型的表示层和应用层。

3.五层模型:五层模型是一种简化版的网络模型,由物理层、数据链路层、网络层、传输层和应用层组成。相比 OSI 七层模型,五层网络模型将上层概括为一个应用层,简化了模型的层次。相比 TCP/IP 五层模型,区分的更加清晰,应用层和传输层的对应更加准确。

常用的网络检测命令

  1. ping:检测网络主机是否可达,以及网络延迟。

    ping www.baidu.com
    
  2. traceroute:检测数据包从源到目的地的路径和路径上的每一跳网关的IP地址。

    traceroute www.baidu.com 
    
  3. netstat:显示网络连接,路由表和网卡信息。

    # 显示所有有效TCP连接
    netstat -at  
    
    # 显示所有TCP和UDP端口
    netstat -au
    
    # 显示路由表
    netstat -r
    
  4. ip:显示和操作路由,设备,策略路由和隧道。

    # 显示接口信息
    ip addr
    
    # 显示路由表  
    ip route 
    
  5. nmap: 用于端口扫描和安全审计。

    
    扫描主机网络是否存活及开放了哪些端口
    nmap www.baidu.com  
    
    # 扫描局域网内所有主机开放的端口  
    nmap -sP 192.168.1.0/24 
    
  6. tcpdump:用于网络数据包的捕获和分析。

    # 抓取所有网卡数据包  
    tcpdump -i any   
    
    # 只抓取8080端口的数据包
    tcpdump port 8080
    
  7. lsof:列出打开的文件,其中也包括网络文件,用于确定进程打开的端口与连接。

    # 列出所有打开的TCP连接
    lsof -iTCP  

设置静态IP

  1. 修改 /etc/sysconfig/network-scripts/ifcfg-eth0 文件 CentOS下,网络配置文件是ifcfg-eth0,修改内容如下:
    DEVICE=eth0
    BOOTPROTO=static  # 静态IP,默认是dhcp
    IPADDR=192.168.1.10   # 静态IP地址
    NETMASK=255.255.255.0  # 子网掩码
    GATEWAY=192.168.1.1    # 网关
    DNS1=8.8.8.8           # DNS服务器
    ONBOOT=yes             # 开机启动
然后重启网络服务:
    service network restart
  1. 修改 /etc/network/interfaces 文件 Ubuntu下,网络配置文件是 /etc/network/interfaces,修改内容如下:
    auto eth0
    iface eth0 inet static
    address 192.168.1.10
    netmask 255.255.255.0
    gateway 192.168.1.1
    dns-nameserver 8.8.8.8
    

然后重启网络服务:

    /etc/init.d/networking restart