Files
rikako-note/tcpip/tcp_ip协议.md
2024-12-31 01:15:30 +08:00

70 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# tcp/ip详解-协议
## 概述
### 四层协议系统
TCP/IP协议族通常被认作是四层协议系统每层分别负责不同功能由下到上分别为
1. 链路层(数据链路层)
2. 网络层负责分组在网络中的活动例如分组的选路等。网络层协议通常包含ip协议,icmp协议igmp协议
3. 传输层负责在两台主机之间提供端到端的通信tcp/ip协议族中传输层协议有TCP和UDP
4. 应用层:负责处理特定的协议细节
> #### IGMP
> IGMP为internet组管理协议其用于将udp数据报广播到多个主机
> #### ARP & RARP
> ARP和RARP是某些网络接口使用的特殊协议用于转换ip层和链路层所使用的地址。
### ipv4地址
ipv4地址大小为4字节其分类如下所示
- A类 0~127.xxx.xxx.xxx (第一bit为0)
- B类 128~191.xxx.xxx.xxx (前两位bit为10)
- C类: 192~223.xxx.xxx.xxx (前三位bit为110)
- D类224~239.xxx.xxx.xxx (前四位bit为1110)
- E类240~255.xxx.xxx.xxx (前五位bit为11110)
### 协议层封装
当应用向网络中发送数据时,数据被送入协议栈中,从上到下,从应用层一直到数据链路层,每层协议都会为上一层提交的数据添加首部或尾部信息,并且将修改后的数据传递给下一层。
其中,个数据层叫法如下:
- tcp传递给网络层的数据被称为tcp段tcp segment
- 网络层传递给数据链路层的数据被称为ip数据报ip datagram
- 通过以太网传输的数据流被称为帧frame
> #### 以太网数据帧
> 以太网数据帧,其以太网首部长度为`14字节`,尾部为`4`字节。
>
> 且数据帧的长度必须位于46字节~1500字节之间
> #### packet
> 更确切说ip传递给数据链路层的是分组packet分组可能是ip数据报ip datagram也可能是ip数据报的一个片fragment
> #### UDP datagram
> UDP数据和TCP数据类似UDP传递给IP的数据被称为UDP数据报UDP datagram
>
> UDP首部长度为8字节。
> #### IP首部
> 除了TCP, UDP向IP传递数据外`ICMP`和`IGMP`也会向IP传输数据即使ICMP和IGMP和IP都位于网络层。
>
> 故而IP首部中存在长度为8bit的范围用于标识传递给ip的协议。该字段中1表示ICMP2表示IGMP6表示TCP17表示UDP。
> #### TCP/UDP首部中的端口号
> 有很多程序都使用UDP/TCP来传递数据故而需要通过端口号来标识程序。
>
> 端口号长度为16bit范围为`0 ~ 65535`tcp和udp把源端口号和目标端口号存放在报文首部。
> #### 数据链路层标识传递数据的协议
> 类似于ip网络接口不仅会被ip传递数据ARP和RARP即使和网络接口一样位于数据链路层但是仍然会向网络接口传递数据。故而以太网帧的首部同样存在一个16bit的区域用于标识传递数据的协议。
### 分用
当目标主机接收到网络上传输到的数据时,会沿着协议栈至底向上传递。
在每层协议从下层协议接收到数据时,会去掉本层的首部/尾部。每层协议都会检查首部中的标识区域,用于判断上层协议,并将去掉首部/尾部后的数据传递给上层协议。这个过程被称之为`分用`
各层协议其对应上层协议可能为:
- 以太网网络接口:上层协议可能为`ARP, RARP, IP`
- IP协议上层协议可能为`ICMP, IGMP, TCP, UDP`
- TCP, UDP: 上层可能为各种应用层序通过来源ip、来源端口号、目标端口号进行判断