《Linux高性能服务器编程》— TCP/IP详解

第一章 TCP/IP协议族

1.1 TCP/IP协议族体系结构及主要协议

  • 概述
    此图很重要,背下来!!!
    在这里插入图片描述
  • 1.数据链路层
    两个地址解析协议:ARPRARP
    链路层主要协议PPP(点对点)、CSMA/CD(广播)
  • 2.网络层
    IP协议
    ……
    ICMP协议
    主要用于检测网络连接;
    ICMP包含两类报文:差错报文(用于回传网络错误)、查询报文(用于查询网络连接,比如ping);
    注:ICMP也是封装到IP报文中的,并不是单独发送的网络层报文!!!
  • 3.传输层
    在这里插入图片描述
    TCP
    可靠、面向连接、基于流;
    会在内核中为TCP连接维持一些必要数据结构,比如连接状态、读写缓冲区、定时器等;
    通信结束时,双方必须关闭连接以释放内核资源
    UDP
    不可靠、无连接、基于数据报;
    不可靠:使用UDP的应用层需要自行处理数据确认、重传等;
    无连接:每次发送数据都需要指明接受端的地址(而TCP则不必)
    基于数据报:接受端必须以数据报长度为单位将数据一次读出,否则被截段
    SCTP
    为了在因特网上传输电话信号而设计
  • 4.应用层
    应用层在用户空间实现;
    链路层、网络层、传输层在内核空间实现
    应用层程序可能跳过传输层直接使用网络层提供的服务,比如ping直接使用网络层的ICMP

1.2 封装

  • 封装
    在这里插入图片描述
    注以:链路层封装后的以太网帧有尾部!!!

  • 以TCP封装为例
    在这里插入图片描述
    注意TCP内核缓冲区
    TCP发送数据后会继续缓存一段时间;UDP发送后会立即删除UDP内核缓冲区的数据

1.3 分用

  • 概述
    不管是哪一层,都需要通过该层报文首部的特定字段来向上分用;只是我们通常只注意到了端口号……
    在这里插入图片描述

1.4 测试网络

书中的测试网络(局域网),略……

1.5 ARP协议工作原理

  • 概述
    ARP用于进行网络层地址到物理层地址的转换;
    ARP仅限于局域网内,对于广域网,则是先找到路由器/网关,后续有路由器负责……
    所以ARP中的IP地址应该是内网IP?……
    工作原理:主机向自己所在的网络广播一个ARP请求,请求包含目标机器的网络地址;此网络上的其他机器都将收到这个请求,但只有被请求的目标及其会回应一个ARP应答,其中包含自己的物理地址

  • ARP请求/应答报文
    在这里插入图片描述

  • ARP高速缓存的查看和修改

    arp -a :查看arp高速缓存
    arp -d IP :删除IP对应的arp缓存
    arp -s IP MAC:添加arp缓存
    

    缓存的内容:经常访问或最近访问的机器的IP地址到物理地址的映射(比如网关地址),从而避免重复的ARP请求;
    网关地址:参考1.8

  • 使用tcpdump观察ARP通信过程
    详见P10……

1.6 DNS工作原理

  • DNS查询和应答报文
    在这里插入图片描述
    16位标识:用于标记一对DNS查询和应答;
    16位标志:用于协商具体的通信方式和反馈通信状态
    ……
  • Linux下访问DNS服务
    /etc/resolv.conf:存放DNS服务器的IP地址;
    host程序:用于访问DNS服务器的客户端程序,比如:
    host -t A www.baidu.com
    
  • 使用tcpdump观察DNS通信过程
    sudo tcpdump -i eth0 -nt -s 500 port domain
    
    // 另起一个终端,执行...
    host -t A www.baidu.com
    
    相信分析见P15

1.7 socket和TCP/IP协议族的关系

  • 概述
    1. 链路层、网络层、传输层是在内核实现,socket系统调用使应用程序能够访问内核中这些协议提供的服务
    2. socket的功能一:将应用程序数据从用户缓冲区复制到TCP/UDP内核发送缓冲区,以交付内核来发送数据
    3. socket的功能二:应用程序通过它来修改内核中各层协议的某些头部信息或其他数据结构,从而精细地控制底层通信行为;
    4. socket是一套通用网络编程接口,不仅可以访问TCP/IP协议栈,还可以访问其他网络协议栈(比如X.25、UNIX本地域协议栈等)

1.8 网络中的一些设备/概念区分

  • 网关和路由器
    从概念上理解
    网关是不同网络的边缘设备,负责不同网络的数据转发,特点是数据会解包,重新打包,会修改包头数据 => 数据从内网到公网必须通过网关
    路由器不会解包数据,只是利用包头的目的地址匹配自己的路由表,然后转发到下一跳的路由。
    从实现上来说
    通常,路由器就有网关的功能,它既能作为公网私网的连接点,也能负责公网上数据的转发;
    但网关不一定必须是路由器,还可以是三层交换机、防火墙或者插了两块网卡的电脑,只要能作为内网数据的出口即可(即网关不是必须工作在网络层……)
    PC1------router1------router2------router3-------PC2
    
    在上拓扑中router1,router3分别是PC1,PC2的网关。
    那router2呢,那就不是任何一个设备的网关了。

第二章 IP协议详解

2.1 IP服务的特点

  • 无状态
    指IP通信双方不同步传输数据的状态信息,所有IP数据报的发送、传输、接收都是相互独立、没有上下文关系的 => 从而无法处理乱序和重复等情况
    优点:简单、高效 => 无需为保持通信状态而分配一些内核资源,也无需每次传输数据时都携带状态信息
  • 无连接
    IP通信双方都不长久地维持对方的任何信息 => 生成协议

第三章 TCP协议详解

第四章 TCP/IP通信案例:访问Internet上的Web服务器

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值