TCP/IP协议栈--IP,TCP,UDP,ARP知识

OSI协议栈、TCP/IP协议栈

IP数据报的格式

生存时间TTL:

TTL的作用是限制IP数据包在计算机网络中的存在的时间。TTL的最大值是255TTL的一个推荐值是64为了避免跳跃节点的时候,无限循环跳转。每经过一个节点,TTL都会-1,当它为0时,则该数据报被丢弃。

MTU:

max transfer unit,最大传输单元。一般是1500个字节。一个ip数据报分片的单位。它是包括ip首部在内的。由于一般的ip首部是20个字节,因此一般的ip数据是1480个字节。


标识:每个IP包的唯一值,相同的分片标识相同

标志:

DF: 0=可以分片   1=不可以分片,出错时发送ICMP

MF: 0=最后一个分片    1=还有更多的分片在后面

片偏移:标识本包在整个包中的位置,以8字节为单位

任何一片数据的丢失需要上层重传整个报文


TCP

进程到进程的通信,基于字节流的,面向连接的,全双工的可靠的通信服务。

 

TCP首部

1、源端口/目地端口:各16位,标识应用程序的端口号,取值范围:0~65535。

2、序号:这个32位字段定义本报文段第一个数据字节的序列号。TCP对每个数据字节都有一个编号,初始序列号(ISN)在连接建立的时候随机产生。

3、确认号:这个32位字段定义了接收端期望从对方接收的序号。确认号可以和数据捎带在一起发送。

4、首部长度:表示头部4字节为单位的长度,头部最长为15*4=60字节。

5、保留:6位,在当前的Linux实现中只有4位。

6、控制位:

URG:紧急指针有效

ACK:确认字段有效

PUSH:立即推送数据,大多数情况被忽略

RST:连接复位

SYN:连接建立的复位

FIN:终止连接

ECE(ECN-Echo):标识支持显示拥塞通知(RFC3168)

CWR(Congestion Window Reduced):窗口降低标记,表明自己已经降低了发送速度(RFC3168)

7、窗口值:16位,表明接收方的接收窗口大小,用于流控

8、校验和:强制性使用,覆盖TCP头部和数据

9、紧急指针:当URG有效时,该16位有效。把紧急指针+序列号可以得到报文段中最后一个紧急数据字节。

10、可选项:最多40个字节,常见的有时间戳选项、窗口扩大选项、最大报文长度选项、SACK选项。

 

 

TCP三次握手(建立连接)

1.客户端发送第一次握手数据包,SYN=1,ACK=0

2.服务器回应一个数据包,该包同时具有向客户握手和确认第一个握手的功能。SYN=1, ACK=1。

3.客户端返回一个数据包,确认第二次握手, ACK=1。建立连接。

 

 

 

TCP四次挥手(断开连接)

由于TCP是全双工的协议,因此每个方向必须单独关闭

1.客户端发送第一次挥手数据包,FIN=1,

2.服务器发送确认数据包,ACK=1

3.服务端发送第一次挥手数据包,FIN=1,

4.客户端发送确认数据包,ACK=1

半关闭状态:连接的一端在发送了FIN之后还能继续接受数据的能力。

TIME_WAIT状态:需等待2MSL。客户端发送最后一个包,到达服务器最多需要MSL的时间,服务器如果在MSL的时段内未收到这个包,则会发回一个包请求重新发送。这个包到达客户端最多需要MSL的时间。则客户端发送最后一个包后,经过2个MSL的间隔还是没有收到服务请求重传的包,则真正的结束连接。

 

TCP状态变换

 

UDP

用户数据报协议。和tcp不同的地方在于它不怎么去管理传输,只是快速的交付。

UDP没有TCP的握手、确认、窗口、重传、拥塞控制等机制,UDP是一个无状态的传输协议,所以它在传递数据时非常快。没有TCP的这些机制,UDP较TCP被攻击者利用的漏洞就要少一些。但UDP也是无法避免攻击的。

 

源端口:源端口号。在需要对方回信时选用。不需要时可用全0。

目的端口:目的端口号。这在终点交付报文时必须要使用到。

长度:UDP用户数据报的长度,其最小值是8(仅有首部)

检验和:检测UDP用户数据报在传输中是否有错。有错就丢弃。

伪首部仅仅用来计算校验和,不出现在数据报里。

 

MAC物理地址

某个物理网卡的标识符,用来定义网络设备的位置,全球唯一。MAC地址存在于数据链路层中。


以太网帧

 

以太网帧只使用物理地址来通信,物理地址由arp表和ip查出。

表格的生成是借助arp协议,向其他电脑发送自己的arp地址,然后记录其他电脑的arp地址。

 

ARP

地址解析协议,根据IP地址获取物理地址主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。

硬件类型:表示硬件地址的类型.它的值为1即表示以太网地址

协议类型:表示要映射的协议地址类型.它的值为 0x0800 即表示 IP 地址

硬件地址长度和协议地址长度:分别指出硬件地址和协议地址的长度,以字节为单位.对于以太网上 IP 地址的 ARP 请求或应答来说,它们的值分别为 6 和 4

OP:指出四种操作类型,ARP 请求(值为1)、ARP 应答(值为 2 )、RARP 请求(值为 3 )和 RARP 应答(值为 4 )

发送端以太网地址:占6个字节,表示发送端MAC地址

发送端IP地址:占4个字节,表示发送端IP地址

目的以太网地址:占6个字节,表示目标设备的MAC物理地址

目的IP地址:占4个字节,表示目标设备的IP地址。

 

ARP协议工作过程

1.当主机A向本局域网上的某个主机B发送IP数据报时,就先在自己的ARP缓冲表中查看有无主机B的IP地址。

 

2.如果有,就可以查出其对应的硬件地址,再将此硬件地址写入MAC帧,然后通过以太网将数据包发送到目的主机中。

 

3.如果查不到主机B的IP地址的表项。可能是主机B才入网,也可能是主机A刚刚加电。其高速缓冲表还是空的。在这种情况下,主机A就自动运行ARP。按一下步骤找出主机B的硬件地址。

 

(1)ARP进程在本局域网上广播一个ARP请求分组。ARP请求分组的主要内容是表明:我的IP地址是192.168.0.2,我的硬件地址是00-00-C0-15-AD-18.我想知道IP地址为192.168.0.4的主机的硬件地址。

 

(2)在本局域网上的所有主机上运行的ARP进行都收到此ARP请求分组。

 

(3)主机B在ARP请求分组中见到自己的IP地址,就向主机A发送ARP响应分组,并写入自己的硬件地址。其余的所有主机都不理睬这个ARP请求分组。ARP响应分组的主要内容是表明:“我的IP地址是192.168.0.4,我的硬件地址是08-00-2B-00-EE-AA”,请注意:虽然ARP请求分组是广播发送的,但ARP响应分组是普通的单播,即从一个源地址发送到一个目的地址。

 

(4)主机A收到主机B的ARP响应分组后,就在其ARP高速缓冲表中写入主机B的IP地址到硬件地址的映射。


  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lmory233

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值