文章目录

  • ​​一、TCP/IP协议族体系结构以及主要协议​​
  • ​​(1)上层协议使用下层协议提供的服务​​
  • ​​1.数据链路层​​
  • ​​(1)数据链路层实现了网卡接口的网络驱动程序​​
  • ​​(2)常用协议是:ARP和RARP协议​​
  • ​​2.网络层​​
  • ​​(1)网络层的任务​​
  • ​​(2)核心协议是:IP协议,重要协议是:ICMP协议​​
  • ​​3.传输层​​
  • ​​(1)传输层与网络层的区别​​
  • ​​(2)主要协议:TCP、UDP、SCTP协议​​
  • ​​(a)TCP协议的总结​​
  • ​​(b)UDP协议的总结​​
  • ​​4.应用层​​
  • ​​(1)在用户空间或内核中实现应用层的区别​​
  • ​​(2)应用层协议:ping应用程序,telnet协议,OSPF协议,DNS协议​​
  • ​​(3)应用层协议(or程序)可能跳过传输层直接使用网络层提供的服务,/etc/services查看所有知名的应用层协议​​
  • ​​二、以太网帧的封装​​
  • ​​1.概念​​
  • ​​2.TCP报文段的封装过程​​
  • ​​3.UDP数据报​​
  • ​​4.IP数据报的特点​​
  • ​​5.数据链路层封装成帧(frame)​​
  • ​​三、以太网帧的分用​​
  • ​​1.概念​​
  • ​​2.如何区别以太网帧的IP协议、ARP协议以及RARP协议?​​
  • ​​3.由于ICMP、TCP、UDP都是基于IP协议的,如何区别它们?​​
  • ​​四、测试网络:所有的客户端、服务器程序都是基于该网络​​
  • ​​五、ARP协议的工作原理​​
  • ​​1.概念​​
  • ​​2.以太网ARP请求/应答报文详解​​
  • ​​3.ARP高速缓存的查看和修改​​
  • ​​4.使用tcpdump观察ARP通信过程​​
  • ​​(1)具体操作如下,但注意:ARP通信在TCP连接建立之前就已经完成​​
  • ​​(2)ARP通信的详细说明,ARP请求和应答是从以太网驱动程序发出来的​​
  • ​​六、DNS工作原理​​
  • ​​1.DNS查询和应答报文详解​​
  • ​​2.Linux下访问DNS服务​​
  • ​​(1)Linux的/etc/resolv.conf存访DNS服务器的IP地址​​
  • ​​(2)访问DNS服务器的客户端程序是host​​

一、TCP/IP协议族体系结构以及主要协议

(1)上层协议使用下层协议提供的服务

(第1章)《Linux高性能服务器编程》TCP/IP协议族_DNS

1.数据链路层

(1)数据链路层实现了网卡接口的网络驱动程序

(第1章)《Linux高性能服务器编程》TCP/IP协议族_DNS_02

(2)常用协议是:ARP和RARP协议

(第1章)《Linux高性能服务器编程》TCP/IP协议族_IP_03


(第1章)《Linux高性能服务器编程》TCP/IP协议族_DNS_04


(3)

ARP协议的用途:

(第1章)《Linux高性能服务器编程》TCP/IP协议族_DNS_05


RARP协议的用途:

(第1章)《Linux高性能服务器编程》TCP/IP协议族_TCP_06

2.网络层

(1)网络层的任务

(第1章)《Linux高性能服务器编程》TCP/IP协议族_DNS_07

(2)核心协议是:IP协议,重要协议是:ICMP协议

(a)IP协议的工作过程

(第1章)《Linux高性能服务器编程》TCP/IP协议族_IP_08


(b)ICMP的工作过程

(第1章)《Linux高性能服务器编程》TCP/IP协议族_IP_09


(第1章)《Linux高性能服务器编程》TCP/IP协议族_TCP_10

3.传输层

(1)传输层与网络层的区别

(第1章)《Linux高性能服务器编程》TCP/IP协议族_IP_11


解释:

(第1章)《Linux高性能服务器编程》TCP/IP协议族_DNS_12

(2)主要协议:TCP、UDP、SCTP协议

(a)TCP协议的总结

(第1章)《Linux高性能服务器编程》TCP/IP协议族_DNS_13


(第1章)《Linux高性能服务器编程》TCP/IP协议族_TCP_14

(b)UDP协议的总结

(第1章)《Linux高性能服务器编程》TCP/IP协议族_DNS_15


(c)SCTP协议

(第1章)《Linux高性能服务器编程》TCP/IP协议族_DNS_16

4.应用层

(1)在用户空间或内核中实现应用层的区别

(第1章)《Linux高性能服务器编程》TCP/IP协议族_DNS_17

(2)应用层协议:ping应用程序,telnet协议,OSPF协议,DNS协议

(第1章)《Linux高性能服务器编程》TCP/IP协议族_IP_18

(3)应用层协议(or程序)可能跳过传输层直接使用网络层提供的服务,/etc/services查看所有知名的应用层协议

(第1章)《Linux高性能服务器编程》TCP/IP协议族_TCP_19


(第1章)《Linux高性能服务器编程》TCP/IP协议族_TCP_20

二、以太网帧的封装

1.概念

(第1章)《Linux高性能服务器编程》TCP/IP协议族_IP_21

2.TCP报文段的封装过程

(第1章)《Linux高性能服务器编程》TCP/IP协议族_DNS_22


解释:

(第1章)《Linux高性能服务器编程》TCP/IP协议族_IP_23

3.UDP数据报

(第1章)《Linux高性能服务器编程》TCP/IP协议族_TCP_24

4.IP数据报的特点

(第1章)《Linux高性能服务器编程》TCP/IP协议族_DNS_25

5.数据链路层封装成帧(frame)

(第1章)《Linux高性能服务器编程》TCP/IP协议族_TCP_26

三、以太网帧的分用

1.概念

(第1章)《Linux高性能服务器编程》TCP/IP协议族_IP_27


以太网帧的分用过程:

(第1章)《Linux高性能服务器编程》TCP/IP协议族_DNS_28

2.如何区别以太网帧的IP协议、ARP协议以及RARP协议?

(第1章)《Linux高性能服务器编程》TCP/IP协议族_DNS_29

3.由于ICMP、TCP、UDP都是基于IP协议的,如何区别它们?

(第1章)《Linux高性能服务器编程》TCP/IP协议族_TCP_30

四、测试网络:所有的客户端、服务器程序都是基于该网络

(第1章)《Linux高性能服务器编程》TCP/IP协议族_DNS_31


(第1章)《Linux高性能服务器编程》TCP/IP协议族_IP_32

五、ARP协议的工作原理

1.概念

(第1章)《Linux高性能服务器编程》TCP/IP协议族_TCP_33

2.以太网ARP请求/应答报文详解

(第1章)《Linux高性能服务器编程》TCP/IP协议族_IP_34


(第1章)《Linux高性能服务器编程》TCP/IP协议族_IP_35

3.ARP高速缓存的查看和修改

(第1章)《Linux高性能服务器编程》TCP/IP协议族_DNS_36

4.使用tcpdump观察ARP通信过程

(1)具体操作如下,但注意:ARP通信在TCP连接建立之前就已经完成

(第1章)《Linux高性能服务器编程》TCP/IP协议族_TCP_37


解释如下:

(第1章)《Linux高性能服务器编程》TCP/IP协议族_DNS_38


(第1章)《Linux高性能服务器编程》TCP/IP协议族_DNS_39


(第1章)《Linux高性能服务器编程》TCP/IP协议族_TCP_40

(2)ARP通信的详细说明,ARP请求和应答是从以太网驱动程序发出来的

(第1章)《Linux高性能服务器编程》TCP/IP协议族_IP_41


解释说明如下:

(第1章)《Linux高性能服务器编程》TCP/IP协议族_DNS_42

六、DNS工作原理

1.DNS查询和应答报文详解

(1)DNS将机器的域名转换成IP地址

(2)具体格式如下

(第1章)《Linux高性能服务器编程》TCP/IP协议族_TCP_43


(a)16位标识字段的含义

(第1章)《Linux高性能服务器编程》TCP/IP协议族_DNS_44


(第1章)《Linux高性能服务器编程》TCP/IP协议族_TCP_45


(b)16位的标志字段

(第1章)《Linux高性能服务器编程》TCP/IP协议族_TCP_46


(第1章)《Linux高性能服务器编程》TCP/IP协议族_DNS_47


(c)其它的4个字段

(第1章)《Linux高性能服务器编程》TCP/IP协议族_IP_48


(第1章)《Linux高性能服务器编程》TCP/IP协议族_IP_49


解释如下:

(第1章)《Linux高性能服务器编程》TCP/IP协议族_TCP_50

2.Linux下访问DNS服务

(1)Linux的/etc/resolv.conf存访DNS服务器的IP地址

(2)访问DNS服务器的客户端程序是host

(第1章)《Linux高性能服务器编程》TCP/IP协议族_IP_51


(第1章)《Linux高性能服务器编程》TCP/IP协议族_IP_52