Follow Excellent, Success will Chase you

0%

图解TCPIP(第5版)

  • 虚拟化技术:指当一个网站(或者其他系统),需要调整运营所需要的资源时,并不增减服务器、存储设备、网络等实际的物理设备,而是利用软件将这些物理设备虚拟化,在有必要增减资源的时候,通过软件按量增减的一种机制。

  • 利用虚拟化技术,根据使用者情况动态的调整必要资源的机制,被人们称之为“云”。

  • MAC地址,数据链路层的标识地址,用来标识同一链路中不同计算机的一种标识码。

  • IP地址,网络层地址,用于在连接到网络中的所有主机中标识出进行通信的目标地址

  • 多跳路由:指路由器或主机在转发IP数据包时只指定下一个路由器或主机,而不是将到最终目标地址的所有通路全都指定出来。

    比如,我们只知道目的地,进行找路一样,每到一个十字路口,向别人打听一下,下一步怎么走。

  • 不同数据链路之间的最大区别:各自的最大传输单位(MTU:Maximum Transmission Unit)

    不同的数据链路,好比现实中不同的交通工具一样,运力各不相同

    以太网:MTU=1500Byte

  • LAN: (Local Area Network), 局域网

  • WAN:(Wide Area Network), 广域网
  • VLAN:(Virtual Local Network), 虚拟局域网
  • WLAN:(Wireless Local Area Network),无线局域网

IP协议

  • IP(网络层),采用面向无连接,一是:简化;二是:提速。

    IP提供尽力服务(Best Effort),意指“为了把数据包发送到最终目的地址,尽最大努力”。

  • IP地址:
    IP地址由“网络标识(网络地址)”和“主机标识(主机地址)”两部分组成。

    IPv4: 32位, 每8位为一组,最多允许43亿台左右的计算机接入网络。

    IPv6: 128位,一般写成8个16位字节

  • IP地址分为四个等级,A类B类C类D类,不同的等级代表此网段可以容纳的主机个数,D类地址没有主机标识,被作为多播(组播)地址

  • 广播无法穿透路由(路由器不转发广播的数据包)。

  • IP地址的网络部分用于进行路由控制。

  • 在路由跳转中,如果路由表中存在多条相同的网络记录,选择一个最为吻合的网络地址,所谓最为吻合是指相同位数最多的意思(也就是最长匹配)

  • 路由:默认路由主机路由

    默认路由: “0.0.0.0/0”或default

    主机路由: “IP地址/32”,如192.168.45.21/32是主机路由,表示整个IP的所有位参与路由。

  • 回环地址:在同一台计算机上的程序之间进行网络通信时所使用的一个默认地址。回环地址:172.0.0.1

  • IP报文的分片,主要原因和依据是数据链路的不同,导致MTU的不同所致,因此分片的主要实施者是主机路由器(两个不同的链路之间),但是IP报文的重组只有目标主机完成。

  • 路径MTU发现:所谓路径MTU(Path MTU),指从发送端主机到接收端主机之间不需要分片时最大的MTU大小,即路径中存在的所有数据链路中最小的MTU。(采用路径MTU后,路由器将不在做分片处理, 只是发送端主机进行分片)

  • IPv6的分片处理只作为起点的发送端主机进行,路由器不参与分片。(IPv6中MTU=1280bit)

  • Qos:Quality Of Serice(服务质量)

  • ARP: (Address Resolution Protocol),根据IP地址定位MAC地址

    ARP采用广播实现

  • RARP:(Reverse Address Resolution Protocol),根据MAC地址定位IP地址。

    搭建一个RARP的服务器,在一个设备接入时,RARP会根据提前注册的设备的MAC地址查找出IP,并配置到该设备

  • ICMP:主要功能

    确定IP包是否成功送达目标地址,通知在发送过程中IP包被废弃的具体原因,改善网络设置等。

    消息:两类

    a. 一类是通知出错原因的消息; b. 一类是用于诊断的查询消息

  • ICMP消息类型:

消息类型(十进制)内容
0回送应答(Echo Reply)
3目标不可达(Destination Unreachable)
4原点抑制(Source Quench)
5重定向或者改变路由(Redirect)
8回送请求(Echo Request)
9路由器公告(Router Advertisement)
10路由器请求(Router Solicitation)
11超时(Time Exceeded)
17地址子网请求(Address Mark Request)
18地址子网应答(Address Mark Reply)
  • 在ICMP中,包以文明的形式像TCP/UDP一样通过IP进行传输。

  • ICMPv6:在ICMPv6中,从IP地址定位MAC地址的协议ARP转为ICMP的邻居探索消息(Neighbor Discovery)。

    邻居请求消息利用IPv6的多播地址实现传输

  • 在ICMPv6中,ICMP大致分为两类,一类是错误消息,另一类是信息消息

  • HDCP: (Dynamic Host Configuration Protocol)自动设置IP地址,统一管理IP地址分配

    在使用DHCP之前,都有架设一台DHCP服务器,一般由该网段的路由器充当HDCP服务器

  • DHCP现实即插即用:指只要物理上一接通,无需进行专门的设置就可以直接使用。

  • DHCP功能的实现:主要分两个阶段,在发送DHCP发现包和DHCP请求包时,DHCP即插即用的IP尚未确定。因此,DHCP发现包的目标地址为广播255.255.255.255,而源地址为0.0.0.0,表示未知。

  • DHCP中继代理:对不同网段的IP地址分配,由一个DHCP服务器统一管理和维护。

    DHCP客户端会向DHCP中继代理发送DHCP请求包,而DHCP中继代理在收到这个广播包后再以单播的形式发给DHCP服务器。服务器端收到该包以后再向 DHCP中继代理返回应答,并由DHCP中继代理将此包转发给DHCP客户端(单播)。

    DHCP包中包含了主机的MAC地址。DHCP中继代理利用MAC地址使用单播的方式将包返回给了DHCP客户端

  • NAT:(Network Address Translator)是用于在本地网络中使用私有地址,在连接互联网时转而使用全局IP地址的技术。

  • 多播:在多播通信中确认接收端是否存在非常重要,是通过MLD(Multicast Listener Discovery)实现。它是IPv4中的IGMP和IPv6中的ICMPv6的功能之一。

  • IGMP(MLD)的作用:a、向路由器表明想要接收多播消息(并通知想接收多播的地址);b、向交换集线器通知想要接收的多播地址。

  • RSVP(Resolution Reservation Protocol):控制通信质量,它主要包括两个内容,一是提供点对点的详细优先控制(IntServ),另一个是提供相对较粗粒度的优先控制(DiffServ)

  • ECN(Explicit Congestion Notification):IP层使用的一种显式拥塞通知机制

TCP与UDP

  • TCP/IP中有两个具有代表性的传输层协议,分别是TCPUDP

    TCP(Transmission Control Protocol):提供可靠的通信传输,面向连接的、可靠的流协议

    UDP(User Datagram Protocol):常被用于让广播和细节控制交给应用的通信传输。

  • IP首部中有一个协议字段,用来标识网络层(IP)的上一层所采用的是哪种传输层协议。

  • inetd:UNIX系统中监视网络请求的守护进程,其根据网络请求来调用相应的服务进程来处理连接请求。它是一个超级守护进程,该进程收到客户端请求后会创建(fork)新的进程并转换(exec)为相应的服务进程。确认一个请求发给哪个服务端(守护进程),可以通过接收到数据包的目标[端口号]识别

  • TCP为提供可靠性传输,实行“顺序控制”和“重发控制”机制。此外还具备“流控制(流量控制)”、“拥塞控制”、提高网络利用率等众多功能。

  • TCP用于在传输层有必要实现可靠传输的情况,UDP主要用于那些对高速传输实时性有较高要求的通信或广播通信。

  • 端口号:(程序地址)

    数据链路和IP中的地址,分别指MAC地址和IP地址。前者用来识别同一链路中不同的计算机,后者用来识别TCP/IP网络中互连的主机和路由器。在传输层中用端口号识别同一台计算机中进行通信的不同应用程序。

  • 通信(TCP/IP或UDP/IP)的唯一性确定必须包含五个信息:源IP地址目标IP地址协议号源端口号目标端口号

    1
    2
    3
    4
    5
    6
    $ netstat -n
    Active Internet connections (w/o servers)
    Proto Recv-Q Send-Q Local Address Foreign Address State
    tcp 0 1 172.16.189.52:45204 172.217.27.141:443 SYN_SENT
    tcp 0 0 172.16.189.52:48218 172.16.200.101:22 ESTABLISHED
    tcp 0 1 172.16.189.52:53730 64.233.189.100:443 SYN_SENT
  • 端口号确定方法:

    a. 标准既定的端口(静态方法):是指每个应用程序都有其指定的端口号。知名端口号,一般由0到1023的数字分配而成。

    b. 时序分配法(动态方法):动态分配的端口号取值范围在49152到65535之间。

  • 端口号由其使用的传输层决定,不同的传输协议可以使用相同的端口号。

  • TCP通过检验和序列号确认应答重发控制连接管理以及窗口控制等机制实现可靠性传输。

    实现可靠传输,必须解决数据出错、丢包、重复以及分片顺序混乱等问题

  • ACK: (Positive Acknowledgement)确定应答, 在TCP中,当发送端的数据到达接收端主机时,接收端主机会返回一个已收到消息的通知。

  • NACK:(Negative Acknowledgement)

  • RTT(Round Trip Time): 报文往返时间

  • 在TCP首部用于控制的字段来管理TCP连接。一个连接的建立和断开,正常过程至少需要来回发送7个包才能完成。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-------------------------------+-------------------------------+
    | Source Port | Destination Port |
    +-------------------------------+-------------------------------+
    | Sequence Number |
    +---------------------------------------------------------------+
    | Acknowledgment Number |
    +-------+-----------+-+-+-+-+-+-+-------------------------------+
    | Data | |U|A|P|R|S|F| |
    | Offset| Reserved |R|C|S|S|Y|I| Window |
    | | |G|K|H|T|N|N| |
    +-------+-----------+-+-+-+-+-+-+-------------------------------+
    | Checksum | Urgent Pointer |
    +-------------------------------+---------------+---------------+
    | Options | Padding |
    +-----------------------------------------------+---------------+
    | data |
    +---------------------------------------------------------------+
    • ACK:确认序号有效标识。只有当ACK=1时确认号字段才有效。当ACK=0时,确认号无效。
    • SYN:同步序号标识,用来发起一个连接。SYN=1表示这是一个连接请求或连接接受请求。
    • FIN:发端完成发送任务标识。用来释放一个连接。FIN=1表明此报文段的发送端的数据已经发送完毕,并要求释放连接。
  • TCP的建立和断开

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    +--------+                                    +--------+
    | | +--------------------------------> | |
    | host A | | host B |
    | | <--------------------------------+ | |
    +---+----+ +----+---+
    | |
    | SYN (请求建立连接) |
    +--------------------------------------------> |
    | |
    | ACK(针对SYN的确认应答) SYN(请求建立连接) |
    | <--------------------------------------------+
    | |
    | ACK(针对SYN的确认应答) |
    时 +--------------------------------------------> |
    间 | +----------------------------------------+ |
    轴 | | | |
    | | 连接建立完成,发送数据 | |
    | | | |
    | +----------------------------------------+ |
    | |
    | |
    | FIN (请求切断连接) |
    +--------------------------------------------> |
    | |
    | ACK (针对FIN的确认应答) |
    | <------------------------------------------+ |
    | |
    | FIN (请求切断连接) |
    | <------------------------------------------+ |
    | |
    | ACK (针对FIN的确认应答) |
    +--------------------------------------------> |
    | |
    | |
    v v

一个TCP的建立需要发送三个包,这个过程也叫“三次握手”;断开是需要发送4个包,这个过程也叫“四次挥手”

TCP中发送第一个SYN包的一方叫做客户端,接收这个的一方叫做服务端

  • TCP中以为单位发送数据, MSS(Maximum Segment Size):最大消息长度
  • TCP在传送大量数据时是以MSS大小将数据进行分割发送。
  • MSS的确定:在TCP的”三次握手“建立连接时,两边主机协商确定的大小。

  • 窗口大小是指无需等待确认应答而可以连续发送数据的最大值。

  • TCP流控制:让发送端根据接收端的实际接收能力控制发送的数据量。

  • 提高网络利用率的规范:Nagle算法延时确认应答捎带应答

  • 传输层协议:TCPUDPUDP-LiteSCTP(Stream Control Transmission Protocol)DCCP

  • 校验和的计算: 校验和字段的值是校验和字段以外剩下部分的1的补码和

    TCP和UDP一样在计算校验和的时候使用TCP伪首部

    1
    2
    3
    4
    5
    6
    7
    8
    9
    >0                                                             31
    >+-------------------------------------------------------------+
    >| 源IP地址 |
    >+-------------------------------------------------------------+
    >| 目标IP地址 |
    >+-------------+---------------+-------------------------------+
    >| 填充 0 | 协议号 6 | TCP包长度 |
    >+-------------+---------------+-------------------------------+
    >
  • TCP、UDP使用校验和的目的: 进行路由内存故障或程序漏洞导致的数据是否被破坏的检查

  • TCP首部序列号:序列号不会从0或者1开始,而是建立连接时由计算机生成的随机数作为其初始值,通过SYN包传给接收端主机。

路由协议

  • 路由器根据路由控制表(Routing Table)转发数据包。

  • 路由:静态路由、动态路由

    静态路由: 指事先设置好路由器和主机中并将路由信息固定的一种方法。
    动态路由: 指让路由协议在运行过程中自动地设置路由控制信息的一种方法。

  • 路由协议分为两类:一类外部网关协议(EGP, Exterior Gateway Protocol); 一类是内部网关协议(IGP, Interior Gateway Protocol)

  • 路由控制算法:距离向量(Distance-Vector)算法链路状态(Link-State)算法

    距离向量算法(DV):指根据距离(代价)和方向决定目标网络或者目标主机的方法
    链路状态算法(LS):指路由器在了解网络整体连接状态的基础上生成路由控制表的方法

  • 路由协议:

路由协议名下一层协议方式适用范围循环检测
RIPUDP距离向量域内不可以
RIP2UDP距离向量域内不可以
OSFPIP链路状态域内可以
EGPIP距离向量对外连接不可以
BGPTCP路径向量对外链接可以
  • RIP: Routing Infomation Protocol, 路由信息协议

    基于距离向量算法决定路径,距离(Metrics)的单位为“跳数”,跳数是指所经过的路由器个数。

    RIP定期将自己所知道的路由信息进行广播

  • RIP2: 使用多播方式在路由器之间交换信息

  • OSPF:(Open Shortest Path Fist), 链路状态型路由协议

    OSPF针对IP首部中的区分服务(TOS)字段,生成多个路由控制表。

应用协议

  • Telnet: 利用TCP的一条连接,通过这一条连接向主机发送文字命令并在主机上执行。
  • SSH: TCP通信
  • FTP: 使用两条TCP连接,一条用来控制;一条用于数据(文件)的传输。
  • SMTP:发送电子邮件协议,TCP
  • HTTP:TCP
  • CGI:Web服务器调用外部程序时所使用的一种服务端应用的规范。
  • Cookie: Web应用中为了获取用户信息使用一个机制。

  • SNMP:(Simple Network Management Protocol), UDP协议,用于TCP/IP中网络管理信息的收集。

网络安全

  • 防火墙:

    基本设计思路: ”暴露给危险的主机和路由器的个数要有限”

  • IDS(入侵检测系统)

  • 加密与OSI模型

分层加密技术
应用层SSH、SSL-Telnet、PET、PGP、S/MIME
表示层,传输层SSL/TLS、SOCKS V5加密
网络层IPsec
数据链路层Ethernet、WAN加密机制、PPTP(ppp)
  • 加密:指利用某一个值(密钥)对明文的数据通过一定的算法变换成加密(密文)数据的过程。
  • 解码:加密的逆反过程。

  • 对称加密:AESDES

    加密和解密使用相同的密钥叫做对称加密方式

  • 非对称加密(公钥加密方式): RSADH(Diffie-Hellman)

    在加密和解密过程中分别使用不同的密钥(公钥和私钥),叫做公钥加密方式

  • VPN:(Virtual Private Network), 虚拟专用网,为了保障数据的安全,防止信息泄露。

    在构建VPN时,最常使用的是IPsec。它是指在IP首部的后面追加“封装安全有效荷”和”认证首部”,从而对此后数据进行加密,不被盗取者轻易解读。

  • HTTPS中采用的对称加密方式

  • OSI七层网络模型