tcp ip 协议简要汇总

OSI 7层模型

应用层

表示层

会话层

传输层

网络层

数据链路层

物理层


网络硬件

集线器: 工作在物理层,只能工作在半双工模式(不能同时读写),发送到端口A的数据,集线器上其他端口都能收到,集线器的端口能收到所有其他端口上收到的数据。

交换机:工作在数据链路层,交换机能够通过MAC地址唯一标识设备,交换机不会广播数据,他只会把数据发给指定MAC地址的设备,其内部有个CAM(内容寻址寄存器)

路由器:工作在网络层,路由器的端口与ip地址对应,其内部含有路由表,具有路由寻址功能。


ARP协议

将ip地址转换为MAC地址的过程成为ARP协议,一般过程如下

请求:

hi 大家好我的ip地址是xx,MAC地址是xx,我要向ip地址是xx的家伙发送东西,但我不知道他的硬件地址,你们谁有这个ip地址的,

可否回复我你的MAC地址。


请求将广播给网段中的所有设备,不是该ip的设备将丢弃,而拥有该ip的则


应答:

你好,传输设备,我就是你要找的ip地址为xx的,我的MAC地址是xx


无偿ARP: 当某个设备的IP改变时,该设备会广播通知他的ip已改变


ARP数据包结构:

硬件类型:数据链路层使用的类型数据,在大多数情况下,这个类型是以太网(类型1)

协议类型:ARP请求正在使用的高层协议,一般为IP协议

硬件地址长度:

协议地址长度:

操作码:ARP数据包功能:1表示请求,2表示应答

发送方硬件地址:

发送方协议地址:

目标硬件地址:目标接收方的硬件地址(ARP请求中为0)

目标协议地址:


 


ip协议

ip头长度一般为20字节,除非含有选项字段

ip数据包结构:

版本号(Version):

首部长度(Header length):

服务类型:优先级标志位和服务类型标志,被路由器用来进行流量的优先排序

总长度:ip头与数据包的数据长度

标识符:一个唯一标识的数字,用来识别一个数据包或被分片数据包的次序

标记(Flags):用来标记一个数据包是否是一个分片,这个域中的值就会被用来将数据包以正确的顺序重新组织

存活时间:定义数据包的生成周期,每经过一个路由器将减1

协议:用来识别在数据包序列中上层协议数据包的类型,比如icmp,tcp,udp

首部校验和:一个错误检测机制,用来确定ip头有没损坏或篡改

源ip地址:

目的ip地址:

选项:保留做额外的ip选项

数据:使用ip传递的实际数据


tcp协议:

tcp数据包结构:

源端口:

目的端口:

序号(sequence num):用来表示一个tcp片段,这个域用来保证数据流中的部分没有缺失

确认号(ack num):这个数字是通信中希望从另一个设备得到的下一个数据包的序号

标记(flags):URG, ACK, PSH, RST, SYN, FIN,都是用来表示所传输的TCP数据包的类型

窗口大小(window size):tcp接收者缓冲的字节大小

校验和:用来保证tcp头和数据的内容在抵达目的时的完整性

紧急指针:如果设置了URG位,这个域将被检查作为额外的指令,告诉cpu从数据包的哪里开始读取数据

选项:各种可选域,可以在tcp数据包中进行指定


tcp 连接 三次握手

  客户端发送 syn

  服务端发送ack,syn

  客户端发送ack


tcp 关闭连接,四次握手

客户端发送 fin

服务端发送ack

服务端发送fin

客户端发送ack,状态为 TIME_WAIT, 等待 2msl后才会关闭

TIME_WAIT出于2个目的

在这段时间内接收之前未到达的包,防止连接关闭后新的连接收到这些包

等待ack发送成功

因为2msl时间内会确保所有的包会被丢弃(包最长存活时间为msl)



tcp 有发送缓冲区和接收缓冲区

tcp校验和出错则丢弃


tcp有连接队列用于接收三次握手成功的连接,应用程序从tcp队列中获取连接

当连接队列满时,tcp将不理会收到的syn,也不发送任何报文段(即不发送RST),这样客户端的主动打开最终将超时

Tcp滑动窗口为0时,客户端会发送保活数据包


每个Tcp包都会有确认包,如果收不到则会重复发,直到超过重发次数

TCP不对ACK报文段进行确认, TCP只确认那些包含有数据的ACK报文段

连接建立后每个tcp包都会设置ack标志位

 

TCP不对ACK报文段进行确认

tcp定时器

1. 超时重传定时器

    发送方发送报文,启动定时器,如过没收到确认,则会每隔一定时间重复发送报文

2. 坚持定时器 

 ACK的传输并不可靠,也就是说,TCP不对ACK报文段进行确认,TCP只确认那些包含数据的ACK报文段。为了防止因为ACK报文段丢失而双方进行等待的问题,发送方用一个坚持定时器来周期性地向接收方查询。这些从发送方发出地报文段称为窗口探查。 

  如果一个确认丢失了,则双方就有可能因为等待对方而使连接终止:接收方等待接收数据(因为已经向发送方通告了一个非0的窗口),而发送方在等待 允许它继续发送数据的窗口更新。为了防止这种死锁情况的发生,发送方使用一个坚持定时器来周期性的向对方查询,以便发现窗口是否已增大。这些从发送方发出 的报文段称为窗口探查。


3. 保活定时器

    1.如果主机可达,对方就会响应ACK应答,就认为是存活的。
    2.如果可达,但应用程序退出,对方就发RST应答,发送TCP撤消连接。
    3.如果可达,但应用程序崩溃,对方就发FIN消息。
    4.如果对方主机不响应ack, rst,继续发送直到超时,就撤消连接。这个时间就是默认
      的二个小时。




4. 2msl定时器

    主动关闭连接一方处于time_wait状态的时间,在2msl内保持连接


UDP协议

UDP数据包结构:

源端口:

目的端口:

数据包长度:

校验和:


 udp端口都与1个有限大小的输入队列相联系,来自不同客户的差不多同时到达的请求将由udp自动排队,接收到的数据报

以其接收顺序交给应用程序,当队列溢出时udp将丢弃数据报。应用程序并不知道输入队列何时溢出


ICMP协议

ICMP数据包结构:

类型(type):请求或应答

代码(code)

校验和(checksum)

可变域(variable):依赖于类型和代码域的部分


DHCP协议

dhcp协议是一个应用层协议,能够让设备自动获取ip地址

dhcp数据包结构:

操作码(OpCode):用来指出这个数据包是DHCP请求还是回复

硬件类型:硬件地址类型(10MB以太网,IEEE802,ATM以及其他)

硬件长度:硬件地址长度

跳数(Hops):中继代理用来帮助寻找dhcp服务器

事务ID:用来匹配请求和响应的一个随机数

消耗时间:客户端第一次向dhcp服务器发送地址请求后的时间

标记:dhcp客户端能够接受的流量类型(单播,广播以及其他)

客户端ip地址:客户端ip地址(由“你的”ip地址域派生)

“你的”ip地址:dhcp服务器提供的ip地址(最终为客户端的ip地址域的值)

服务器ip地址:dhcp服务器ip地址

网关地址:网络默认网关地址

客户端硬件地址:客户端MAC地址

服务器主机名:服务器主机名(可选)

启动文件:DHCP所使用的启动文件(可选)

选项:用来对dhcp数据包进行扩展,已提供更多功能


dhcp的主要任务是在续租过程中向客户端分配ip地址,以下是续租过程,包含4种不同的数据包

dhcp客户端 =>(发现)  dhcp服务器, 

dhcp客户端 <=(提供  dhcp服务器

dhcp客户端 =>(请求)  dhcp服务器

dhcp客户端 <=(确认)  dhcp服务器


发现数据包:

此阶段,客户端ip使用0.0.0.0,因为它还没有ip地址,数据包被发往255.255.255.255,因为这是一个独立于网络的广播地址,因而

能保证这个数据包被发往网络上的每台设备


提供数据包:

此阶段,服务器尝试使用arp提供的客户端硬件地址与之通信,如果失败,则直接广播


请求数据包:

此阶段客户端仍使用0.0.0.0作为ip地址,因为此时还没有完成获取ip地址的过程


确认数据包:

此过程后,客户端才拥有ip


dhcp租约内续租:

dhcp分配的ip只能使用一段时间,如果过期则需续租,租约内续租只需请求和确认这2个步骤。


DNS协议

DNS数据包结构

dns id号:用来对应dns查询和响应

查询/响应(QR):用来指明这个数据包是查询还是响应

操作码(OpCode):用来定义消息的请求类型

权威应答(Authoritative Answer,AA):如果设置了这个值,则说明这个响应是由域内权威域名服务器发出的

截断:用来指明这个响应太长,无法装入数据包而被截断

期望递归(Recursion Desired, RD):当请求中设置了该值,则说明dns客户端在目标域名服务器不含有所请求信息的情况下,要求进行递归查询

可用递归(Recursion Avaiable,RA):当响应中设置了该值,说明域名服务器支持递归查询

保留(Z):

响应代码:在dns响应中用来指明错误

问题计数:在问题区段中的条目数

回答计数:在回答区段中的条目数

域名服务器计数:在权威区段的域名资源记录数

额外记录数:在额外信息区段中其他资源记录数

问题区段:大小可变,包含有被发送到dns服务器的一条或多条的信息查询的部分

回答区段:大小可变,含有用来回答查询的一条或多条资源记录

权威区段:大小可变,包含指向权威机构域名服务器的资源记录,用来继续解析过程

额外信息区段:包含资源记录且大小可变的区段,这些资源记录用来存储完全没有必要回答的查询相关的额外信息


















你可能感兴趣的:(tcp ip 协议简要汇总)