《高性能》第一篇 <TCP/IP协议详解> 第一章 TCP/IP 协议族

文章目录

  • 第一章 TCP/IP协议族
    • 1.1 TCP/IP协议族体系结构以及主要协议
      • 1.1.1 数据链路层
      • 1.1.2 网络层
      • 1.1.3 传输层
      • 1.1.4 应用层
    • 1.2 封装
    • 1.3 分用
    • 1.4 测试网络
    • 1.5 ARP协议工作原理
      • 1.5.1 以太网ARP请求/应答报文详解
      • 1.5.2 ARP高速缓存的查看和修改
      • 1.5.3 使用tcpdump观察ARP通信过程
    • 1.6 DNS工作原理
      • 1.6.1 DNS查询和应答报文详解
      • 1.6.2 Linux下访问DNS服务
      • 1.6.3 使用tcpdump观察DNS通信过程
    • 1.7 socket和TCPIP协议族的关系

第一章 TCP/IP协议族


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

TCP/IP协议族是一个四层协议,自底向上分别是数据链路层、网络层、传输层和应用层。如下图所示:
《高性能》第一篇 <TCP/IP协议详解> 第一章 TCP/IP 协议族_第1张图片


1.1.1 数据链路层

数据链路层实现了网卡接口的网络驱动程序,以处理数据在物理媒介上的传输。
这一层两个常用的协议是:ARP协议(地址解析协议) RARP(逆地址解析协议)。他们实现了IP地址和机器物理地址之间的相互转换。
RARP协议仅用于网络上的某些无盘工作站。


1.1.2 网络层

网络层实现数据包的选路和转发。 WAN广域网 LAN局域网
网络层最核心的协议:IP协议(因特网协议)。IP协议采用逐跳(hop by hop)的方式确定路径。
另一个重要的协议是:ICMP协议(因特网控制报文协议)。主要用于网络检测,其报文格式为:
《高性能》第一篇 <TCP/IP协议详解> 第一章 TCP/IP 协议族_第2张图片
报文中,8位类型字段用于区分报文类型。


1.1.3 传输层

传输层为两台主机山的应用程序提供端到端(end to end)的通信
传输层和网络层的区别如下:
《高性能》第一篇 <TCP/IP协议详解> 第一章 TCP/IP 协议族_第3张图片
图中,垂直的实线箭头表示TCP/IP协议族各层之间的实体通信(数据包也是沿着这样的路径传递的);
水平的虚线箭头表示逻辑通信线路。
其中还可以看出:
数据链路层(驱动程序)封装了物理网络的电气细节;网络层封装了网络连接细节;传输层则为应用程序封装了一条端到端的逻辑通信线路,它负责数据的收发、链路的超时重传。


传输层协议主要有三个:TCP协议 UDP协议 SCTP协议

TCP协议(传输控制协议):为应用层提供可靠的、面向连接的和基于流的服务。
可靠:TCP协议使用超时重传、数据确认等机制来确保数据被正确的发送到目的端
面向连接:使用TCP协议通信的双方在通信前必须先建立TCP连接,并在内核中为该连接维持一些必要的数据结构。
基于流:基于流的数据没有边界限制

UDP协议(用户数据包协议),它为应用层提供的是不可靠的、无连接和基于数据报的服务。
不可靠:没有一些机制来保证数据包的准确到达。
无连接;指通信双方无法保持一个长久的联系
基于数据报:相对于基于流而言的


1.1.4 应用层

应用层负责处理应用程序的逻辑。是在用户空间实现的
应用层协议
ping是应用程序,而不是协议,是调试检测网络的工具
telnet是一种远程登陆协议
OSPF(开放最短路径优先):协议是一种动态路由跟新协议,用于路由器之间的通信,以告知对方各自的路由信息。
**DNS(域名服务)**协议提供机器域名到IP地址的转换


1.2 封装

上层协议是如何使用下层协议提供的服务的呢?通过封装实现。
何为封装???
应用程序数据在发送到物理网络之前,将沿着协议栈从上到下依次传递。每层协议都将在上层数据的基础上加上自己的头部信息,以实现该层的功能,这个过程就称为封装
《高性能》第一篇 <TCP/IP协议详解> 第一章 TCP/IP 协议族_第4张图片

经过TCP封装后的数据成为TCP报文段
《高性能》第一篇 <TCP/IP协议详解> 第一章 TCP/IP 协议族_第5张图片
经过UDP封装后的数据报称为UDP数据报
经过IP封装后的数据报称为IP数据报
经过数据链路层封装的数据称为
帧才是最终在物理网络上传送的字节序列。


1.3 分用

当帧到达目的主机时,将沿着协议栈自底向上依次传递。各层协议依次处理帧中本层负责的头部数据,以获取所需的信息,并最终将处理后的帧交给目标应用程序。这个过程称为分用。
分用是依靠头部信息中的类型字段实现的。
《高性能》第一篇 <TCP/IP协议详解> 第一章 TCP/IP 协议族_第6张图片
因为TCP协议、ARP协议和RARP协议都使用帧传输数据,所以帧的头部需要提供某个字段来区分它们。
同样,因为ICMP协议、TCP协议和UDP协议都采用IP协议,因此IP数据报的头部采用16位的协议来区分它们。
TCP报文段和UDP报文段通过其头部的16位端口号字段来区分上层应用程序。比如DNS协议对应的端口号是53,HTTP(超文本传输协议)对应的端口号是80


1.4 测试网络

《高性能》第一篇 <TCP/IP协议详解> 第一章 TCP/IP 协议族_第7张图片


1.5 ARP协议工作原理

ARP协议能实现任意网络层地址到任意物理地址的转换。
本书讨论的是从IP地址到以太网地址(MAC地址)的转换.其工作原理是:主机向自己所在的网络广播一个ARP请求,改请求包含目标机器的网络地址。次网络上的其他机器都将收到这个请求,但只有被请求的目标机器回回应一个ARP应答。


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

《高性能》第一篇 <TCP/IP协议详解> 第一章 TCP/IP 协议族_第8张图片


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

ARP维护一个高速缓存,其中包含经常经常访问或最近访问的机器的IP地址到物理地址的映射。
Linux下可以用arp命令来查看和修改ARP高速缓存。
arp -a


1.5.3 使用tcpdump观察ARP通信过程

用tcpdump抓包
《高性能》第一篇 <TCP/IP协议详解> 第一章 TCP/IP 协议族_第9张图片
tcpdump抓取到数据包中,只有前两个和ARP通信有关:
在这里插入图片描述
由tcpdump抓取到的数据报本质上是以太网帧。
">"前是源端地址,后是目的端地址;
Request 表示是一个ARP请求,Reply表示是一个ARO应答


1.6 DNS工作原理

一般我们 访问服务器都是通过域名进行访问的,而DNS服务就是帮助我们实现访问的:将IP地址转换为域名。

1.6.1 DNS查询和应答报文详解

1.6.2 Linux下访问DNS服务

1.6.3 使用tcpdump观察DNS通信过程

1.7 socket和TCPIP协议族的关系

你可能感兴趣的:(LInux学习,TCP/IP网络编程,Linux高性能服务器,tcp/ip,网络协议,linux)