TCP/IP协议栈详解
一,TCP/IP协议栈概述
1,TCP/IP协议层次结构
应用层
传输层
互联网层
网络接口层
2,TCP/IP协议栈与OSI/RM模型的区别
相同点:
两者都是以协议栈的概念为基础
协议栈中的协议彼此相互独立
下层对上层提供服务
不同点:
OSI是先有模型;TCP/IP是先有协议,后有模型
OSI适用于各种协议栈;TCP/IP只适用于TCP/IP网络
层次数量不同
OSI是参考模型,TCP/IP是工业标准
TCP/IP协议栈各功能层次讲解
二,应用层
文件传输类协议:TFTP,FTP,NFS
邮件协议:SMTP,POP3
远程登陆管理协议:Telnet,rlogin,SSH
网络管理协议:SNMP
名称管理协议:DNS
三,传输层
传输层有两个协议,其分别为:
TCP(transmission control protocol):传输控制协议,是一种面向连接的可靠的传输协议
UDP(user datagram protocol):用户数据报协议,是一种非面向连接的不可靠的传输协议
(一) TCP协议详解:
1,TCP协议报文格式
source port(16)源端口号:主要用于标识或区分上层的服务
destination port(16)目的端口号
sequence number(32)顺序号:其确定发送方发送的数据流中被封装的数据所有位置,
acknowledgement number(32)确认号:其确定源点下一次希望从目标接收的顺序号
header length(4)头部长度:一个比特表示一个单位(4字节),即TCP头部最长64字节.其用于标识有效负载的起始点
reserved(6)保留字段:
code bits(6)代码位:用于数据流控制和连接控制.其分别为:紧急位,确认位,推进位,复位位,同步位,结束位
windows(16)窗口:表示数据的吞吐量,用于流量控制,在数据传输过程中可以随时调节,一个比特表示一个字节,即最大吞吐量为65536字节
checksum(16)校验和:对整个数据段进行校验,在此处可以看出段的最大容量为65536字节
urgent(16)紧急指针:当代码位中的紧急位被标记时才使用,用于指明紧急数据的结束点
options(0~32)可选项:
data(varies)有效负载(数据):
*************
端口号:是传输层对上层服务的一种映射,传输层是通过端口号来识别上层的服务及会话的,其共分为三类:
知名端口:0~1023 已被唯一指定为计算机中的各种应用
注册端口:1024~49151 注册后方可使用
私有端口:49152~65535 可以私用,但不被公共认可
源端口号:会话发起方的源端口号随机选择(>=1024且未被自己使用的端口),其用于标识本地的上层服务及区分会话
目的端口号:其作用是指定会话对等体要用什么上层协议来读取数据.
常见的端口号有:
基于TCP协议封装的应用层协议:FTP(20,21),SSH(22),TELNET(23),SMTP(25),DNS(53),HTTP(80),POP3(110),HTTPS(443)
基于UDP协议封装的应用层协议:DNS(53),TFTP(69),SNMP(161),RIP(520)
*************
2,TCP协议是面向连接的可靠的传输机制
A) TCP的三次握手(建立会话--即面向连接)
在数据传输前建立一个可靠的连接,以确定双方都能接收到对方的数据,其是数据传输前的准备工作.
主要由协议中的"顺序号","确认号",代码位中的"同步位","确认位"来进行
B) 确认及重传机制
在数据传输过程中通过"顺序号"与"确认号"来对数据进行确认,如果出错则要重新传输(不管是接收方没有收到数据还是发送方没有收到接收方的确认信息).
C) 流量控制机制(窗口)
在发送数据时,会携带自己的窗口的相关信息,以此与对方协商发送及接收数据的吞吐量大小
(二) UDP协议详解:
source port(16)源端口号
destination port(16)目的端口号
length(16)长度
checksum(16)校验合
***********************
TCP协议与UDP协议的异同点
共同点:
工作在传输层,用端口号标识及区分上层的会话
不同点:
TCP:是面向连接的可靠的传输协议.在数据传输前,通过三次握手建立会话;数据传输过程中要等待对方的确认或错误重传,而且自身的负荷为20~64字节,因此可靠性高,但传输效率低
UDP:是非面向连接的不可靠的传输协议.在数据传输前不需建立会话,数据传输过程中没有确认机制,且自身的负荷为8字节,因此传输效率高,但可靠性无法保障
***********************
四,网络层
网络层的协议众多,在此我们讨论几个有代表性的协议:IP,ICMP,ARP,RARP
(一) IP协议
vsersion(4)版本:目前使用的是IPV4,IPV6正在测试阶段
header length(4)头部长度:表示报头的长度,一个比特表示一个单位(4字节).即头部最大长度为64字节
priority & type of service(8)优先级及服务类型:QOS
total length(16)总长度:整个IP报文长度,一个比特表示一个字节,即总长度最大值为65536字节
identification(16)标识:
flags(3)标记:第一位没有使用;第二位为分片位,"0"表示可分片,"1"表示不可分片;第三位为分片截止位,"1"表示还有后继分片,"0"表示无后继分片
fragment offset(13)分片偏移:标识,标记,分片偏移三者一起用于IP报文的分片,其受MTU的影响
time to live(8)生存周期:IP报文的生存时间,最大值255
protocol(8)协议号:用来标识本层或上层的协议
header checksum(16)头部校验合:
source ip address(32)源IP地址:
destination ip address(32)目的IP地址:
options(0~32)选项:
data(varies)有效负载(数据):
******************
常见的协议类型及其对应的协议编号:
ICMP:1 , TCP:6 , UDP:17 , EIGRP:88 , OSPF:89
******************
(二) ICMP协议
主要用于测试网络的连通性,主要应用有ping和traceroute,其主要是利用ICMP协议中的ECHO报文(echo和echo-reply)
ping:用于测试从源到目的是否可以有一条可以工作的路径,在IOS中ping反馈的结果有:
! : ping操作成功,收到了icmp echo reply报文
. : 未收到任何报文
U : 目的不可达
traceroute:用于测试从源到目的所经过的详细路径信息
(三) ARP/RARP协议
ARP:地址解析协议.知道对方的IP地址,求对方的MAC地址
RARP:逆向地址解析协议.知道自己的MAC地址,求自己的IP地址