TCP/IP协议族简介

OSI网络分层介绍

  网络结构的标准模型是OSI模型,由国际互联网标准化组织定义的网络分层模型。虽然目前没有完全按照这种模型实现的网络协议栈,但是学习这个模型对于我们理解网络协议还是很有帮助的。

1.OSI网络分层模型

  7层,同一层是对等层,对等层之间规则是一致的。

     什么是协议栈?一个网络上运行的网络规则。通过协议栈的不同层可以划分为不同层。

2.OSI的七层网络结构

  • 物理层:物理特性(机械特性,功能特性,电器特性),传输单位是比特,网卡在物理层
  • 数据链路层:可靠数据传输,物理寻址,数据成帧,数据的检测重发,流量控制以及链路控制
  • 网络层:一个主机到另一个主机,有流量控制,拥塞控制等。数据单位为包。
  • 传输层:分段,用来保证上一层的会话层能够传输到另一方的会话层。
  • 会话层:建立,终止,会话过程。主要功能是提供请求者和提供者之间的通信。
  • 表示层:对数据进行处理,包括压缩,加密,以及格式的转换
  • 应用层:为应用程序提供访问网络服务的接口。或者为用户提供常用的应用,比如电子邮件应用,网络浏览器,QQ这些。。。。。

下三层(物理层,数据链路层,网络层)是通信子网层,为上层提供通信服务。需要注意,OSI并不是一个网络的结构,他只是告诉我们每一层应该做什么。ISO为每一层都定义了标准,每个标准都有自己的内部标准定义。

3.OSI参考模型中的数据传输

 

  • 应用程序调用应用层接口然后进入应用层
  • 应用层加上报头形成对应的协议数据单元,然后传递给下一层
  • 表示层不关系传来的内容,对数据进行处理然后再加上表示层的报头。传给下一层
  • 与上面类似,往下依次加上报头。在数据链路层则不同,需要加上帧头帧尾,打包成一个数据帧,然后再传给物理层。尾部是数据的校验和,用于判断数据是不是正确发送。
  • 物理层将上面传输过来的数据发送出去。

主机B和主机A相反,是一个解封的过程,一次经过物,数,网,传,会,表,应,将主机B发送的数据接收和解包,最后传递给应用程序。

  • 主机B物理层接收数据,送给数据链路层
  • 数据链路层进行校验,如果没有出错就发给上一层网络层。
  • 与上面类似,依次去掉头部传递给上一层,最后到达B的应用程序中。

 TCP/IP 协议栈

  上一节对ISO/OSI7层模型做了简单介绍,由于ISO指定的OSI参考模型过于庞大和复杂,在实现的时候造成了很大困难,所以招到了很多批评。在实际中,TCP/IP协议栈获得了更加广泛的应用。主流的操作系统基本上都采用TCP/IP协议栈。

 1.TCP/IP协议栈参考模型

  从上到下分4个层次:应用层,传输层,网络互联层,和主机到网络层。

 

  • 主机到网络:TCP/IP并没有给出具体实现,仅仅规定了给上一层的网络互联层提供的访问接口,可以传输IP数据包,具体实现随网络类型的不同而不同。
  • 网络互联层:是TCP/IP协议栈的核心。将数据进行分组并发到目的主机或者网络。有时候为了尽快发送分组,一个数据包的分组可能要经过不同的路径进行传递。这样会造成分组到主机的顺序不是原来发送的顺序,这就需要在这一层对分组进行排序。这一层定义了数据包的分组格式和协议,采用的是IP协议,因此网络互联层经常被称为IP层。这一层的功能主要由路由,网际互联和拥塞控制等。
  • 传输层:提供源主机和目标主机上的对等层之间可以进行对话的机制。定义了两种协议,TCP和UDP。TCP是面向连接,可靠的协议。提供了窗口控制,超时重发等方法,将数据发送到互联网上的其他主机。UDP是不可靠的,无连接的协议,使用与不怕数据丢失,不需要对报文进行排序,流量控制的场景。
  • 应用层:将OSI的会话层和表示层取消,功能被合并到应用层,基于TCP协议的有(FTP文件传输协议,HTTP超文本传输协议),基于UDP的协议有简化的FTP协议,网络管理协议SNMP,域名服务DNS,网络文件共享NFS和SAMBA等。还有两种方式均有实现的协议,比如P2P协议。

TCP/IP参考模型的层次结构:

此图的IP层中有网际控制报文协议(ICMP)和地址识别协议(ARP),并不是IP层的一部分,而是和IP层一起工作。ICMP是用来报告网络上的某些出错信息。ARP在IP和数据链路层之间,它是在32位IP地址和48位局域网地址之间执行翻译的协议。

2.主机到网络层协议

  对应与OSI的数据链路层,有上图可以看出本层主要为IP协议和ARP协议提供服务,发送和接收网络数据报。

  TCP/IP技术主要基于以太网标准。采用的是一种带冲突检测的载波侦听多路接入的方法进行传输(CSMA/CD);

  以太网的封包格式(在IP数据的基础上增加了14个字节):

数据段的长度有一个最大值,以太网为1500,这个特性我MTU(最大传输单元),如果比这个值大,在IP层数据要进行分片,使得每个片都小于等于MTU.

CRC用于校验,保证数据传输的正确性,通常由硬件实现,例如网卡设备实现网络数据的CRC校验。

3.IP协议

  IP协议是TCP/IP协议中最为重要的协议。为TCP,UDP,ICMP提供传输的通路。IP层能够提供子网的互联,使不同子网之间能传输数据。IP层的作用:

  • 发现正确的目的主机地址
  • 把数据从一个主机传输到另一个主机
  • 路由选择:选择数据在互联网上的传送路径
  • 数据报文分段,当大于MTU时,将数据进行分段发送

IP数据如图所示,头部长度最短为20个字节。

  • 版本   ip协议的版本号,如果为IPV4此字段值为4,如果为IPV6此字段为6
  • 首部长度    除去数据的整个头部的数据长度,32位为单元进行计算,因为首部长度为20个字节,160位,160、/3=5,所以这个字段最小值是5。
  • 服务类型  8位如图所示

 

优先权现在已经忽略,剩下的分为为最小延迟(D),最大吞吐量(T),最高可靠性(R),最小费用(F).这4个位中最多只用一个位置1,如果全为0,表示为一般服务。

D值为1表示请求低时延

T值为1表示请求高吞吐量、

R值为1表示请求高可靠性

F值为1表示请求低费用

这个主要用在如果有两个路由方式可以选择的时候,路由器读取这些字段,判断用那种方式。

  • 总长度  总长度为16位,表示以字节为单位的数据报文长度。包含IP的头部和数据部分。以16为单位进行计算。理论上,本字段为16位,2^16-1最大可达到65535个字节的长度。
  • 标识和片偏移      IP每发一份数据报文就会填写一个标识表示此数据包。片偏移表示数据在原数据报文中的偏移地址。
  • 生存时间TTL      TTL字段的值表示数据报文最多可以经过的路由器数量。一般为32或者64,经过一个路由器TTL减1.
  • 协议类型       8位,表示IP上承载的是什么高级协议。
  • 校验和        16位长度的数值,使用循环冗余校验,作用是包装IP帧的完整性。
  • IP选项        IP选项字段是一个32位的字段,用来表示IP数据段使正常数据还是用作网络控制的数据。
  • 源地址和目的地址        源地址表示发送数据的主机或者设备的IP地址,目的地址为接收数据的主机IP地址。

 4.网际控制报文协议(ICMP)

用于传递差错信息,时间,回显,网络信息等报文控制数据

  • ICMP协议格式

ICMP报文的数据格式

  • 类型,表示不同类型的ICMP报文(分类)
  • 代码段用于对类型字段ICMP报文的详细规定(更详细划分)
  • 校验和用于校验

举例:目标不可达的报文格式

类型字段的值设为3,代码字段根据实际情况进行设置。第4-7个字节作为保留字,全部设置为0.

5.传输控制协议(TCP)

  在原有IP协议的基础上,增加了确认重发,滑动窗口和复用/解复用等机制,提供可靠,面向连接的字节流服务。

优点:

  1. 有序
  2. 面向连接
  3. 可靠,如果有误不发送确认应答,发送方超时后会自动重发
  4. 缓冲传输
  5. 全双工
  6. 流量控制(滑动窗口)

TCP数据在IP报文中的位置

TCP报文的数据格式

  • 源端口号和目的端口号:

表示发送端和接收端的端口,用于确认发送端和接收端的应用程序。

  • 序列号:表示分配给TCP包的编号。依次加1
  • 确认号:接收成功确认号加1,并返回回来,发送方再次发送的时候从确认号开始
  • 头部长度:TCP头部的长度,以32位为单位
  • 保留位:没有使用
  • 控制位:可以多个位一起设置

  • 窗口尺寸:表示本机上TCP协议可以接受的以字节为单位的数目
  • 校验和:用于检测传输数据的正误
  • 紧急指针:16b。只有设置了URG位才有效,它指出了紧接紧急数据的字节的顺序编号。
  • 选项:经常使用的最大分段长度MSS。指明当前主机所能接收的最大报文长度。

 三次握手:

四次握手释放连接

tcp的封装和解封装

如图所示

原文地址:https://www.cnblogs.com/xiaochi/p/9020290.html