第一章、TCP协议详解

TCP/IP协议包含众多协议,本章,我们介绍几个相关协议:ICMP协议,ARP协议,DNS协议,学习他们对于理解网络通信很有帮助。

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

TCP/IP协议从下到上分四层:数据链路层,网络层,传输层,应用层。

应用层  ping  OSPF  DNS  用户空间

传输层    TCP          UDP

网络层  ICMP         IP      内核空间

数据链路层    ARP  data-link RARP

1、(1)数据链路层:实现了网卡接口的网络驱动程序,以处理数据在物理媒介(以太网,令牌环网)上的传输。

(2)俩个常用的协议:ARP(地址解析协议),RARP:他们实现了IP地址和机器物理地址(MAC)之间的相互转换。

(3)网络层必须使用IP地址来寻找一台机器,而数据链路层使用MAC寻找一台机器,因此网络层必须使用ARP将IP地址转换为物理地址,才能使用数据链路层提供的服务,这就是ARP协议的用途。

2、(1)网络层:网络层实现数据包的选路和转发。WAN通常使用众多的路由器来连接分散的主机或LAN,因此,通信的俩台主机一般不是直接相连的,而是通过多个中间节点(路由器)连接的。网络层的作用就是选择这些中间节点,确定主机之间的路径。网络层隐藏了上层协议网络拓扑的连接的细节,使得在传输层和网络应用程序看来,通信的双方是直接相连的。

(2)网络层的核心就是IP协议,IP协议根据数据包的目的IP地址来决定如何投递他。如果数据包不能直接发送给目标主机,那么IP协议就为他寻找一个合适的下一跳路由器,并将数据包交给该路由器来转发。多次重复这一过程,数据包最终到达目标主机,或者由于发送失败而被丢弃。可见,IP协议使用逐跳的方式来确定通信路径。

(3)网络层另外一个重要的通信协议就是ICMP:(因特网控制报文协议)。它是IP协议的重要补充,主要用于检测网络连接。ICMP协议使用的报文格式如下:

8位类型 8位代码 16位校验和

报文内容,取决于报文的类型。

“8位类型“字段用于区分报文类型。他将ICMP报文分为俩大类:差错报文,这类报文主要用来回应网络错误,比如目标不可到达(类型值为3)和重定向(类型值为5);另一类是查询报文,这类报文用来查询网络信息,比如ping程序就是使用ICMP报文查看目标是否到达(类型值为8)的。有的OCMP报文还是用8位代码字段来进一步细分不同的条件。

“16位校验和”字段对整个报文尽心循环冗余校验(CRC),以校验和在传输过程中是否损坏。不同的ICMP报文类型具有不同的正文内容,我们将在以后详细讨论主机重定向报文。

3、传输层:(1)提供端口到端口的通信。与网络层使用的逐跳通信方式不同,传输层只关心起始端和目的端,而不在乎数据包的中转过程。

(2)传输层协议主要有三个:TCP协议,UDP协议,SCTP协议:

  TCP协议(传输控制协议)为应用层提供可靠的,面向连接的和基于流的服务。TCP协议使用超时重传,数据确认等方式来确保数据包被正确的发送至目的端,因此TCP服务是可靠的。使用TCP通信的双方必须先建立TCP连接,并在内核中为该链接维持一些必要的数据结构,比如连接的状态,读写缓冲区,等。通信结束时候,必须关闭连接以释放这些内核数据。TCP服务是基于流的。基于流的数据没有长度限制,他源源不断的从一段流入另外一端。发送端可以逐个字节地向数据流中写入数据,接收端也可以逐个字节的将他们读出。

  UDP协议:(用户数据报协议)与TCP相反,为应用层提供不可靠的,无连接的,基于数据报的服务。使用UDP协议的时候,应用程序通常要自己处理数据确认,超时传输等逻辑。UDP是无连接的,通信双方不保持长久的连接,因此应用程序每次发送的数据都要明确指定接收端的地址。每个UDP都有一个长度限制,接收端必须以该长度为最小单位将其所有的内容一次性读出,否则数据将被截断。

  SCTP协议:(流控制传输协议)为了在因特网上传书电话信号而设计的一种协议。

4、应用层协议:(1)ping应用程序,而不是协议,利用ICMP报文检测网络连接,是调试网络连接环境的必备工具。

(2)telnet协议是一种远程登录协议,它使我们能在本地完成远程任务。

(3)OSPF:(开放最短路径优先)是一种动态路由更新协议,用于路由器之间的通信,以告知对方各自的路由器信息。

(4)DNS:(域名服务协议)提供机器域名到IP地址的转换。

二、封装。

经过数据链路层封装的数据叫做帧。传输媒介不同帧也不同。以太网上传输的是以太网帧,令牌环网上传输的是令牌环网帧。

以太网帧,使用6个字节的目的物理地址和6字节的源物理地址来表示通信的双方。

帧的最大传输单元,就是帧最多能携带多少上层协议数据,通常受到网络类型的限制。以太网帧就是1500字节。正因为如此,过长的ip数据包可能需要被分片传输。

目的物理地址 源物理地址 类型 数据 CRC
6字节 6字节 2字节 46~1500字节 4字节

帧,才是最终在物理网络上传送的字节序列。至此,封装,完成。

三、分用。

  当帧到达目的主机时候,将沿着协议自底向上依次传递。各层协议依次处理帧中本层负责的头部数据,以获取所需的信息,并最终将处理后的帧交给目标应用程序。这个过程称为分用。

  分用是依靠头部信息中的“类型”字段实现的。标准文档RFC1700定义了所有标识上层协议的类型字段以及每个上层协议对应的数值。

以太网帧使用2个字节的”类型“字段来标识上层协议。TCP,和UDP 报文则通过其头部中的16位端口号字段来区分上层应用程序。比如DNS协议对应的端口号是53,HTTP协议,对应的的端口号就是80.所有知名的应用层协议使用到的端口号都可在文件中找到。

  帧,通过分用之后,最终将封装前的原始数据送至目标服务。这样在顶层目标服务看来,封装和分用似乎没有发生过。

四、测试网络。

。。。

五、ARP协议工作原理。

ARP可以实现任意网络层地址(IP)到任意物理地址的转换(MAC),原理就是:主机向自己所在的网络广播一个ARP请求,该请求包含目标机器的网络地址。此网络上的其他机器doUI激昂收到这个请求,但只有被请求的目标机器才会回应一个ARP应答,其中包含自己的MAC。

(1)以太网ARP请求/应答报文的格式如下:

硬件类型 协议类型 硬件地址长度 协议地址长度 操作 发送端以太网地址 发送端IP地址 目的端以太网地址 目的端IP地址
2字节 2字节 1字节 1字节 2字节 6字节 4字节 6字节 4字节

  硬件类型字段定义物理地址的类型,值为1标识MAC地址。  

  协议类型字段表示要映射的协议地址类型,它的值为0x800,表示IP地址。

  硬件地址长度字段和协议地址长度字段,顾名思义,其单位就是字节。对MAC地址来说,其长度为6;对IP地址来说,其长度为4。

  ”操作“字段指出4种操作类型:ARP请求(值为1),ARP应答(值为2),RARP请求(值为3)和RARP(值为4)。

  最后四个字段指定通信双方的以太网地址和IP地址。发送端填充除目的端以太网地址外的3个字段,以构建ARP请求并发送之。接收端发现该请求的目的端IP地址是自己,就把自己的以太网地址填进去,然后交换俩个目的端和俩个发送端地址,以构建ARP应答并返回之。由上图可知,ARP报文长度为28字节。如果再加上以太网帧头部和尾部的18字节,则一个携带ARP请求/应答报文的以太网帧长度为46字节。

(2)ARP高速缓存的查看和修改。

  通常,ARP维护一个高速缓存,其中包含经常访问的机器的IP到MAC的映射。这样就避免了重复的ARP请求,提高了发送数据包的速度。

  linux下可以使用ARP命令啦查看和修改ARP高速缓存。

(3)使用tcpdump观察ARP通信的过程。

。。。

六、DNS工作原理。

  我们通常使用使用机器的域名来访问这台机器,不直接使用其IP地址,比如访问因特网上的各种网站。那么我们如何将机器的各种域名转换成IP地址?这就需要域名查询系统。

1、DNS查询和应答报文详解。

DNS是一套分布式的域名查询服务系统。每个DNS服务器上都存放着大量的机器名和IP地址的映射,并且是动态的更新的。众多网络客户短程序都是用DNS协议来向DNS服务器查询目标主机的IP地址。DNS查询和应答报文的格式如图:

16位标识 16位标志
16位问题个数 16位应答资源记录个数
16位授权资源记录数目 16位额外的资源记录数目
查询问题(长度可变)
应答(资源记录数目可变,长度可变)
授权(资源记录数目可变,长度可变)
额外信息(资源记录数目可变,长度可变)

(1)16位标识字段用于标记一对DNS查询和应答,以此区分一个DNS应答是哪个DNS查询的回应。

(2)16位标志字段用于协商具体的通信方式和反馈通信状态。DNS保温头部的16位标志字段的细节如下:

QR opeode AA TC RD RA zero rcode

。。。

2、socket和TCP/IP协议族关系。

  数据链路层,网络层,传输层,应用层,是在内核中实现的。因此操作系统需要实现一组系统调用,使得应用程序能够访问这些协议提供的服务。实现这组系统调用的API主要有俩套,socket和XTI。

  由socket定义的这组API提供如下俩点功能:一是,将应用程序数据从用户缓冲区中复制到TCP/UDP内核发送缓冲区,已交付内核来发送数据,,或者是从内核TCP/UDP接收缓冲区中复制数据到用户缓冲区,已读取数据。;二是,应用程序可以通过他们来修改内核中各层协议的某些头部信息或其他数据结构,从而精细低控制底层通信的行为。

  值得说的是,socket是一套通用的网络编程接口,不但可以访问TCP/IP协议栈,而且可以访问其他网络协议栈。

原文地址:https://www.cnblogs.com/yjds/p/8834338.html

时间: 2024-08-01 10:45:01

第一章、TCP协议详解的相关文章

入木三分学网络第一篇--VRRP协议详解第一篇(转)

因为keepalived使用了VRRP协议,所有有必要熟悉一下. 虚拟路由冗余协议(Virtual Router Redundancy Protocol,简称VRRP)是解决局域网中配置静态网关时,静态网关出现单点失效现象的路由协议. VRRP广泛应用在边缘网络中,它的设计目标是支持特定情况下IP数据流量失败转移不会引起混乱,允许主机使用单路由器(位于一个虚拟路由器组中, 在该组中,只有一台路由器--master路由器工作,转发数据包,其它路由器是backup路由器,不参与转发数据包),以及在实

TCP协议详解(下)

 TCP协议详解 TCP状态转移 TCP连接的任意一端在任一时刻都处于某种状态,当前状态可以通过netstat命令查看,这里我们主要讨论TCP连接葱白建立到关闭的整个过程中通信两端状态的变化.如图是TCP状态转移过程. 图中,粗虚线表示典型的服务器连接的状态转移:粗实线显示典型的客户端连接的状态转移. TCP状态转移总图 服务器转移过程,这里我们说的连接状态指定是该连接的服务器状态. 服务器通过listen系统调用进入LISTEN状态,被动等待客户端连接,因此执行的是所谓的被动打开.服务器一

TCP协议详解即实例分析

 TCP协议详解 3.1 TCP服务的特点 TCP协议相对于UDP协议的特点是面向连接.字节流和可靠传输. 使用TCP协议通信的双方必须先建立链接,然后才能开始数据的读写.双方都必须为该链接分配必要的内核资源,以还礼链接状态和连接上数据的传输.TCP链接是全双工的,即双方的数据读写可以通过一个连接进行.完成数据交换之后,通信双方都必须断开连接以释放系统资源. TCP协议的这种连接是一对一的,所以基于广播和多播(目标是多个主机地址)的应用程序不能使用TCP服务.而无连接协议UDP则非常适合于广

TCP协议详解(理论篇)

TCP协议详解(理论篇) 1.    与UDP不同的是,TCP提供了一种面向连接的.可靠的字节流服务.面向连接比较好理解,就是连接双方在通信前需要预先建立一条连接,这犹如实际生活中的打电话.助于可靠性,TCP协议中涉及了诸多规则来保障通信链路的可靠性,总结起来,主要有以下几点: (1)应用数据分割成TCP认为最适合发送的数据块.这部分是通过"MSS"(最大数据包长度)选项来控制的,通常这种机制也被称为一种协商机制,MSS规定了TCP传往另一端的最大数据块的长度.值得注意的是,MSS只能

44 TCP 协议详解

44 TCP 协议详解 TCP 协议 传输控制协议, Transmission Control Protocol,其功能包括:传输:控制 传输包括:建立连接.关闭连接.保证可靠 建立连接:三次握手 三次握手(Three-Way Handshake)即建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立.在socket编程中,这一过程由客户端执行connect来触发,整个流程如下图所示: (1)第一次握手:Client将标志位SYN置为1,随机产生一个值se

TCP协议详解---上

TCP头格式 注意以下几点: TCP的包是没有IP地址的,那是IP层上的事.但是有源端口和目标端口. 一个TCP连接需要四个元组来表示是同一个连接(src_ip, src_port, dst_ip, dst_port)准确说是五元组,还有一个是协议.但因为这里只是说TCP协议,所以,这里我只说四元组. 注意上图中的四个非常重要的东西: Sequence Number是包的序号,用来解决网络包乱序(reordering)问题. Acknowledgement Number就是ACK——用于确认收到

【TCP协议详解】

为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样.计算机使用者意识到,计算机只是单兵作战并不会发挥太大的作用.只有把它们联合起来,电脑才会发挥出它最大的潜力.于是人们就想方设法的用电线把电脑连接到了一起. 但是简单的连到一起是远远不够的,就好像语言不同的两个人互相见了面,完全不能交流信息.因而他们需要定义一些共通的东西来进行交流,TCP/IP就是

TCP协议详解(TCP建立连接与断开连接)

TCP是面向连接的.可靠的进程到进程通信的协议.它提供的是全双工(双向可传输)的服务,每个TCP都有发送缓存和接受缓存,用来临时存储数据. 1.TCP报文段:TCP把若干个字节构成一个分组,称为报文段(segment).TCP报文段封装在IP数据报中,TCP报文段的首部格式如下图所示: 首部长度为20~60个字节,一下是各个字段的含义:①:源端口号:它是16位字段,为发送发进程对应的端口号:②:目标端口号:它是16位字段,对应的是接收端的进程,接收端收到数据段后,根据这个端口号来确定把数据送给哪

TCP协议详解,你从未见过额全新版本

前言: TCP/IP协议簇的传输层协议主要有两个,TCP(Transimission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议) 一:TCP协议介绍 TCP是面向连接的,可靠的进程到进程通信的协议. TCP提供全双工服务,即数据可在同一时间双向传输,每一个TCP都有发送缓存和接收缓存,用来临时存储数据. 二:TCP报文格式 2.1TCP报文段 TCP将若干个字节构成一个分组,成为报文段. TCP报文段封装在IP数据报中