(一)TCP/IP基础
目录
TCPIP基础(一)
ISO/OSI参考模型
ISO/OSI的参考模型共有7层 :物【物理层】 链【数据链路层】 网【网络层】 传【传输层】 会【会话层】 表【表示层】 应【应用层】
简言之,各层的作用:
- 物理层:在物理媒体上传输原始的数据比特流。
- 数据链路层:将数据分成一个个数据帧,以数据帧为单位传输。有应有答,遇错重发。
- 网络层:将数据分成一定长度的分组,将分组穿过通信子网,从信源选择路径后传到信宿。
- 传输层:提供不具体网络的高效、经济、透明的端到端数据传输服务。
- 会话层:进程间的对话也称为会话,会话层管理不同主机上各进程间的对话。
- 表示层: 为应用层进程提供格式化的表示和转换数据服务。
- 应用层:提供应用程序访问OSI环境的手段。
OSI网络体系结构各层协议:
(1)应用层:TELNET、FTP、TFTP、SMTP、SNMP、HTTP、BOOTP、DHCP、DNS
(2)表示层:
文本:ASCII,EBCDIC
图形:TIFF,JPEG,GIF,PICT
声音:MIDI,MPEG,QUICKTIME(3)会话层:NFS、SQL、RPC 、X-WINDOWS、ASP(APPTALK会话协议)、SCP
(4)传输层:TCP、UDP、SPX
(5)网络层:IP、IPX、ICMP、RIP、OSPF(Open Shortest Path First开放式最短路径优先)
(6)数据链路层:SDLC、HDLC、PPP、STP(Spanning Tree Protocol)、帧中继
(7)物理层:EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45
TCP/IP四层模型
1.链路层(数据链路层/网络接口层):包括操作系统中的设备驱动程序、计算机中对应的网络接口卡
2.网络层(互联网层):处理分组在网络中的活动,比如分组的选路。
3.运输层:主要为两台主机上的应用提供端到端的通信。
4.应用层:负责处理特定的应用程序细节。
TCP/IP协议族的分层
假设在一个局域网(LAN)如以太网中有两台主机,二者运行FTP协议:
基本概念(对等通信、封装、分用、端口)
对等通信、
对等通信peer-to-peer communication,为了使数据分组从源传送到目的地,
源端OSI模型的每一层都必须与目的端的对等层进行通信,这种通信方式称为对等层通信。(网络层只能跟网络层通信)
在这一过程中,每一层的协议在对等层之间交换信息,该信息成为协议数据单元(PDU)。
每一层都利用下层提供的服务与对等层通信。(在HostA与HostB之间)
封装、
TCP/IP协议族的上层协议是通过封装来使用下层服务的。
应用程序数据在发送到物理网络之前,将沿着协议族从上往下依次封装。
每层协议都将在上层协议的基础上加上自己的头部信息(以太网还包括尾部信息),以实现改成的功能,这个过程就是封装。
经过TCP封装后的数据成为TCP报文段(TCP message segment)
经过UDP封装后的数据称为UDP数据报。
经过IP封装后的数据称为IP数据报。
经过数据链路层封装的数据称为帧(frame)。
分用、(解封)
当帧到达目的主机时,将沿着TCP/IP协议族从下往上依次传递。
各层协议依次处理帧中本层负责的头部数据,以获取所需的信息,并最终将处理后的数据交给目标应用程序。这个过程称为分用。
分用是靠头部信息中的类型字段实现的。
端口
是设备与外界通讯交流的出口。端口可分为虚拟端口和物理端口,
虚拟端口指计算机内部或交换机路由器内的端口,不可见。例如计算机中的80端口、21端口、23端口等。
物理端口又称为接口,是可见端口,计算机背板的RJ45网口,交换机路由器集线器等RJ45端口。
端口类型
1.周知端口(Well Known Ports)
周知端口是众所周知的端口号,范围从0到1023,其中80端口分配给WWW服务,21端口分配给FTP服务等。
2.注册端口
端口1024到49151,分配给用户进程或应用程序。这些进程主要是用户选择安装的一些应用程序,而不是已经分配好了公认端口的常用程序
3.动态端口(Dynamic Ports)
动态端口的范围是从49152到65535。之所以称为动态端口,是因为它 一般不固定分配某种服务,而是动态分配。
TCPIP基础(二)
最大传输单元(MTU)/路径MTU
最大传输单元(Maximum transmission unit),以太网MTU为1500。
以太网和8 0 2 . 3对数据帧的长度都有一个限制,其最大值分别是1500和1492字节。链路层的这个特性称作MTU,最大传输单元。不同类型的网络大多数都有一个上限。
如果I P层有一个数据报要传,而且数据的长度比链路层的MTU还大,那么IP层就需要进行分片,把数据报分成若干片
路径MTU
两台主机之间的通信要通过多个网络,那么每个网络的链路层就可能有不同的MTU。
两台通信主机路径中的最小MTU。它被称作路径MTU。
以太网帧格式
地址解析: IP地址转换为MAC地址(物理地址) 地址解析协议: ARP协议
MAC地址转换为IP地址 反向地址解析协议: RARP协议
以太网帧数据格式(类型): 1)数据报 2) ARP协议数据报 3) RARP协议数据报
ICMP
ICMP是(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。
出现原因:在IP通信中,经常有数据包到达不了对方的情况。
主要用途:差错通知和信息查询。
ICMP协议的功能主要有:
- 1. 确认IP包是否成功到达目标地址
- 2. 通知在发送过程中IP包被丢弃的原因
ping 就是将数据封装成ICMP协议实现的
ICMP报文包含在IP数据报中,IP报头在ICMP报文的最前面。
ICMP报头如下图所示
ARP-地址解析协议
主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;
收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源
数据在网络中传输过程(ping的过程)
DNS服务器:将主机名转换为IP地址
RARP- 反向地址解析协议
具有本地磁盘的系统引导时,一般是从磁盘上的配置文件中读取IP地址。但是无盘机,如X终端或无盘工作站,则需要RARP方法来获得IP地址。 因此 RARP协议目前已很少使用。
TCPIP基础(三)
IP数据报格式
网际校验和
网际校验和,英文全称(Internet Checksum)发送方对要发送的数据划分为许多16位字序列(如果数据的字节数为奇数,则在末尾补一字节0凑成偶数。)对这些序列反码求和,便得到校验和
如果数据在传输过程中没有发生任何差错,那么接收方计算校验和的结果应该为全1。如果结果不是全1(即校验和错误)。
计算如下:
IP首部(不含校验和)反码+0x1111 = 发送端校验和
IP首部(不含校验和)反码+发送端校验和反码=接收端校验和
IP首部 = IP首部(不含校验和) + 发送端校验和
路由
路由一般根据三个规则:1、搜索匹配的主机地址 2、搜索网络地址 3、搜索默认表项
TCPIP基础(四)
TCP特点
- (1)、基于字节流
TCP传输的单位是段,基于字节流意味着对段的边界不做任何假定,TCP没有提供边界处理,所以需要处理粘包问题。
- (2)、面向连接
需要建立连接
- (3)、可靠传输
网际校验和
- (4)、缓冲传输
缓存数据,找到合适时机发送,提高效率
- (5)、全双工
- (6)、流量控制
滑动窗口机制
TCP报文格式
源端口号与目的端口号 源端口号和目的端口号,加上IP首部的源IP地址和目的IP地址唯一确定一个TCP连接。
序号 序号表示在这个报文段中的第一个数据字节序号。
确认号 仅当ACK标志为1时有效。确认号表示期望收到的下一个字节的序号。
头部长度 4位,TCP头部最多60个字节
保留位 6位,必须为0
6个标志位
- URG-紧急指针有效
- ACK-确认序号有效
- PSH-接收方应尽快将这个报文段交给应用层
- RST-连接重置
- SYN-同步序号用来发起一个连接
- FIN-表示将要终止一个连接
窗口大小 通过窗口大小来达到流量控制。
校验和 对tcp头与数据进行校验。
紧急指针 是一个正的偏移量,与序号字段中的值相加表示紧急数据最后一个字节的序号。TCP的紧急方式是发送端向另一端发送紧急数据的一种方式。
选项与填充(选项为4字节整数倍,否则用0填充) 最常见的可选字段是最长报文大小MSS(Maximum Segment Size),每个连接方通常都在通信的第一个报文段中指明这个选项。它指明本端所能接收的最大长度的报文段。该选项如果不设置,默认为536(20+20+536=576字节的IP数据报)
连接建立三次握手
连接终止四次握手
TCP如何保证可靠性
不可靠主要包括:差错(校验和)、丢包(超时重传)、失序、重复
- 应用数据被分割成TCP认为最适合发送的数据块,称为段传递给IP层。
- 当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。
- 当TCP收到发自TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒。
- TCP将保持它首部和数据的校验和。这是一个端到端的校验和,目的是检测数据在传输过程中的任何变化。如果收到段的校验和有差错,TCP将丢弃这个报文段并且不确认(导致对方超时重传)
- TCP承载于IP数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。TCP将对收到的数据进行重新排序。
- IP数据报会发生重复,TCP的接收端必须丢弃重复的数据。
- TCP还能提供流量控制。TCP连接的每一方都有一定大小的缓冲空间。
TCPIP基础(五)
滑动窗口协议
- 滑动窗口概念不仅存在于数据链路层,也存在于传输层,两者有不同的协议,但基本原理是相近的。
- 其中一个重要区别是,一个是针对于帧的传送,另一个是字节数据的传送。
- 滑动窗口主要实现了流量的控制。
- 在TCP连接建立的过程中,TCP中一个字段包含了窗口的大小,还包含了一个MSS大小(防止ip层数据分片)。
- 滑动窗口协议的基本原理就是在任意时刻,发送方都维持了一个连续的允许发送的帧的序号,称为发送窗口;
- 同时,接收方也维持了一个连续的允许接收的帧的序号,称为接收窗口。
- 发送窗口和接收窗口的序号的上下界不一定要一样,甚至大小也可以不同。不同的滑动窗口协议窗口大小一般不同。
- 发送方窗口内的***代表了那些已经被发送,但是还没有被确认的帧,或者是那些可以被发送的帧。
如上图,
序号为1、2、3的数据已经发送并且已经得到确认,所以滑动窗口开始于序号为4的数据。在这个滑动窗口中序号4-7是已经发送未被确认的数据,8-12是可以发送的数据。如果4-7得到确认,那么滑动窗口会往前移动4个数据单位。
对于接收方,接收方维护一个接收窗口,第一个序号4号表示期望收到的字节序号,如果收到一个数据不是4号但是在接收窗口之内,接收窗口将不会对这个数据确认,如果在接收窗口之外,就会丢弃这个数据。如果收到的数据是4号,接收窗口会对4号数据确认,并将窗口移动一个位置。实际上接收窗口会使用延迟确认机制。在收到连续多个数据才会进行确认,提高确认效率。
UDP特点及报文格式
UDP无连接,不可靠的协议,但是一般情况下UDP更加高效。
可以看出,UDP的头部只有8个字节,数据格式比较简单,在传输过程中效率可能会更高一点。