简介
字面上来讲,可能有人会认为tcp/ip是指tcp与ip两种协议。然而很多情况下,它只是利用ip进行通信所必须用到的协议群的统称。具体来说,ip或icmp、tcp、或udp、telnet或ftp一级http等都属于tcp/ip的协议。tcp/ip一词泛指这些协议、因此,有时也称tcp/ip为网际协议族
互联网进行通信时,需要相应的网络协议,TCP/IP原本就是为了使用互联网而开发指定的协议族。因此互联网的协议就是TCP/IP,TCP/IP就是互联网的协议
概念
icmp协议
(internet control message protocol): 用于在ip主机、路由之间传递控制消息。控制消息是指网络不通、主机是否可达、路由是否可用等网络本身的消息。arp协议
(address resolution protocol): 根据ip地址获取物理地址的一个tcp/ip协议。MSL
(Maximum Segment Lifetime): 报文段的最大生存时间,如果报文段在网络活动了MSL时间,还没有被接收,那么会被丢弃,在linux上MSL为30秒RTO
(retransmission trip timeout): 重传超时时间。主机发送一个TCP数据包后,如果迟迟没有收到ACK,主机多久会重传这个数据包。主机从发出数据包到第一次TCP重传开始,RFC将这段时间间隔称为retransmission timeout,简称RTO。RTT
(round trip time): 请求往返时间
TTL
(time to live): 存在于IP协议头中的8位长度数据,值为数据包到达目的地之前允许经过的路由器跳数,通常用于判定数据包在网络中的时间是否太长而应被丢弃。每经过一个路由,该值减1,当TTL为0时,路由器就酱该数据包丢弃,并向源端发送一个ICMP差错报文,TTL可以防止数据包陷入路由环路
路由环路是指数据包在一系列路由器之间不断传输却始终无法到达其预期目的网络的一种现象
IP协议是一种不可靠的协议,无法进行差错控制。但IP协议可以借助其他协议来实现这一功能,如ICMP
TCP/IP4层模型
应用层、传输层、网络层、数据链路层
数据链路层
不同数据链路最大的区别是它们各自的最大传输单位(MTU)不同
,MTU在以太网中是1500字节,FDDI中是4352字节,ATM中是9180字节
那么如何传输大于MTU的IP包呢?
为解决这个问题,IP包会进行分片处理
,意思就是将较大的IP包分拆成较小的IP包,分片的包到对端目的地址后会再被组合起来传给上一层。即从IP的上层来看,MTU完全是透明的。
TCP数据报文构成
TCP报文: 由 TCP头部 和 TCP数据 组成。
TCP头部: 由 20字节的固定长度 和 可变长字段(选项和填充)组成。
TCP头部总长度: 由TCP头中的“数据偏移/头部长度”字段决定,最大60字节
选项和填充的长度: = TCP头部总长度 - 20字节的固定长度。由头部总长度的计算可知,TCP头部总长度最大为60字节,那么“选项和填充”字段的长度最大为40字节。填充是为了使TCP头部为4byte的整数倍
头部
端口号 确定目标应用
序号 解决乱序
确认序号 解决丢包问题
状态标志位 连接维护
窗口大小 流量控制 拥塞控制,明确指出现在允许对方发送的数据量,它告诉对方本端的TCP接收缓冲区还能容纳多少字节的数据,这样对方就可以控制发送数据的速度。
校验和 占2个字节,由发送端填充,接收端对 TCP 报文段执行 CRC 算法,以检验 TCP 报文段在传输过程中是否损坏,如果损坏这丢弃,这是TCP可靠传输的一个重要保障
数据偏移(头部总长度) 总占用0.5个字节(4位),该字段指出tcp报文段的头部长度,该字段占4bit,取最大的1111时,也就是十进制的15,TCP头部偏移单位为4byte,那么TCP头部长度最长为15*4=60字节。
保留 占0.75个字节(6位)。 保留为今后使用,但目前应置为 0
紧急指针 只有当URG标志为为1时紧急指针有效。紧急指针是一个正的偏移量,和顺序号字段中的值相加标识紧急数据最后一个字节的序号。TCP的紧急方式是发送端向另一端发送紧急数据的一种方式