TCP/IP 基础知识
分组技术
可以让多个用户共享一条线路
tcp/ip 代表什么
- 利用 IP 进行通信时所必须用到的协议群的统称
- RFC 协议的说明,STD 管理 RFC
互联网结构
互联网由很多较小范围的网络组成,每个小网由 骨干网
和 末端网
组成
TCP/IP 协议分层模型
-
物理层
将二进制的0和1和电压高低,光的闪灭和电波的强弱信号进行转换 -
链路层
代表驱动 -
网络层
- 使用 IP 协议,IP 协议基于 IP 转发分包数据
- IP 协议是个不可靠协议,不会重发
- IP 协议发送失败会使用ICMP 协议通知失败
- ARP 解析 IP 中的 MAC 地址,MAC 地址由网卡出厂提供
- IP 还隐含链路层的功能,不管双方底层的链路层是啥,都能通信
-
传输层
- 通用的 TCP 和 UDP 协议
- TCP 协议面向有连接,能正确处理丢包,传输顺序错乱的问题,但是为了建立与断开连接,需要至少7次的发包收包,资源浪费
- UDP 面向无连接,不管对方有没有收到,如果要得到通知,需要通过应用层
- 通用的 TCP 和 UDP 协议
-
会话层
以上分层- TCP/IP 分层中,会话层,表示层,应用层集中在一起
- 网络管理通过 SNMP 协议
TCP/IP 分层模型与通信示例
-
发包过程
表示层转码,会话层决定何时建立连接,传输层负责建立连接,断开连接和发送数据,保证数据能顺利发送至对端。TCP 协议(传输层)在数据前附加一个首部,这个首部除了包含发送端和接收端地址以外,还包含序号,检验和(判断数据是否被破坏)。IP (网络层)模块将 TCP 传来的首部和数据当数据。加首部,这个首部中包含地址和上一层的协议。链路层除了添加首部,还会添加 FCS 到包尾.
-
收包过程
链路层判断 MAC 地址,判断IP 协议。网络层做的事情差不多,在这里,对于有路由器的情况下,借助路由控制表,在找到应该送达的主句或路由器以后再转发数据。传输层检验数据是否被损坏,检验数据是否按照顺序发送,然后再做相同的事情.
数据链路层
数据链路的作用
- 链路层将数据集合为一个帧的块,然后进行传输
- 只提供导线一端到另一端的传输
MAC 地址
- Mac 地址长48比特,被烧入到网卡 ROM 中,不会重复
交换机
- 交换机自学然后生成一张 Mac 表,具体原理为:
交换机4个端口连接着终端,A 终端与端口1连接,发送 frame 后交换机得知端口1和 A 终端的关系,然后转发到其他三端,转发完成后得知端口2与主机 B 想对应,记录到表中。以后主机 A 与主机 B 的通信就通过端口1和端口2进行
帧 frame
帧是“一个数据链路层的传输单元,由一个数据链路层首部和其携带的分组所组成
”。譬如说以太网帧,PPP 帧.
以太网帧结构
- 一个帧以
7个字节的前导码
和1个字节的帧
开始符作为帧的开始 - 抱头包含源和目标的 Mac 地址和表明上一层网络协议的类型
- 接下来是数据
- 后面是帧验证序列,以验证帧是否损坏
- 最后有一个
帧间距
,两个帧发送间要再发送至少12字节的空闲线路状态码
IP 协议
网络层作用
跨越多种数据链路传输数据包
提供路由和寻址功能
IP 地址
-
每块网卡需配置
至少一个 IP 地址
-
IP 地址由32位正整数组成,为二进制,但是为了人类更好的阅读,将他每8位分为一组,共4组
-
IP 地址由
网络
和主机
两标识组成- 网络标识在数据链路的每个段配置不同的值,必须保证相互连接的端的地址不重复
- 主机标识不允许在同一网段内重复
-
IP 地址分为
四个级别
,分别为 A, B, C, D- A类地址是首位为 0 开头,前八位是网络标识, 0.0.0.0 ~ 127.0.0.0属于 A 类
- B 类地址是前两位由 10 组成,前16位是网络标识,128.0.0.0 ~ 191.255.0.0 属于 B 类
- C 类地址前三位是 110, 前24位是网络标识,192.0.0.0 ~ 239.255.255.0 属于 B 类
- D 类前四位是 1110,32位全是网络标识,224.0.0.0 ~ 239.255.255.255属于 D 类
-
但是以上的分类已经不用,
改为使用子网掩码定位网络标识长度
。- 子网标识同一个网关,255.255.255.0和255.255.255.1是同一个子网
- 子网掩码也是32位组成
- 掩码中有几个1就代码几位网络标识,其他为主机标识
- 假如掩码前24位为1,就代表前24位都为网络标识,用 IP 地址标识就是255.255.255.0,后面的0代表主机标识,理论上有256台主机可连接
路由控制
- 仅有 IP 地址还不足以将数据包发送到对端,
还需指明路由器或主机
。保存这种信息的就是路由控制表。 - 路由控制表中记录着地址与下一步要发送至路由器的地址。在发送 IP 包时,
先确定
IP 包首部目标地址,然后
在表中找到与该地址具有相同网络地址的记录,根据记录将 IP 包转发给相应的下一个路由器。
IPv6
- 地址长度为128位
- 解决了很多 IPv4的问题
- IP 地址扩大(目前 IPv4地址不足的问题由 NAT解决,NAT 是一种在 IP 数据包通过路由器或防火墙时重写源 IP 地址或目标地址的技术。这种技术被用于多台主机使用单个公有 IP 访问互联网的私有网络中。)
- 包首部长度固定40字节,路由器不在做分片操作,直接在发送端主机分片
- 不需 DHCP 服务器也能自动分配 IP地址
- 使用认证和加密功能
TCP 与 UDP
传输层协议
TCP 和 UDP 是传输层的两个具有代表意义的协议.
-
TCP 是面向有链接的
,可靠的协议,TCP建立连接需要三次握手
,断开连接需要四次握手
.因为效率比不上 UDP 协议.但是 TCP 协议具有重发包,顺序控制等的机制。 -
UDP 是
面向无连接
的协议,不提供复杂的控制机制。做的最重要的事情就是分辨应用层协议
。多用于视频音频通讯。
传输层的作用是指出具体该把数据包发给哪个应用,通过端口来分辨应用
。
端口号
同一个端口不会同时出现
,传输层通过辨认端口号来确认应用。但是只靠端口号识别通信是不够的。需要 采取五个信息来识别一个通信
,分别是 源 IP 地址
,目标 IP 地址
,协议号
,源端口号
,目标端口号
。两个包中只要任何一个信息不同就不是同一个通信。
TCP
三次握手建立连接
-
主机 A 相与主机 B 建立连接,主机 A 会
首先发送一个 SYN 包
给主机 B。主机 B 会返回 确认应答ACK
或者否定应答NACK
。如果这时主机 A 长时间没有收到主机 B 的应答,主机 A 会重发 SYN
包给主机 B,实现了重发数据包的功能。当主机 B 发送 ACK 给主机 A 后,主机 A也会发送一个 ACK 包
给主机 B,这时建立连接。 -
TCP有顺序控制的功能,通过一个序列号来确认发送的数据。在发送 SYN 包前,假设主机 A 的初始序列号为1000,以该序号依次往下进行数据编号,然后告诉主机 B 初始序列,同时主机 B 会对 A 的序列号进行确认,假如主机 B 返回一个2000的序列号,则代表字节编号为1000 — 1999,表明主机 B 收到1000字节。
为什么不是两次握手 ?
- 两次握手就建立连接,假如主机 A 发送的 SYN
因网络问题迟迟没有到达主机 B
,这时候会重发另一个 SYN 包给 B,当 A 接受到 B 的 ACK 包时建立连接。这时如果第一个 SYN 到达 B 时,主机 B 会认为主机 A 希望再次建立连接,会返回一个 ACK 包给 A。当 A 收到 ACK 时会抛弃掉这个包,因为 A 并不想建立连接,这时主机 B 认为连接已经建立,会一直等待主机 A 发送数据,这样会导致主机 B 的性能损耗
。
四次握手断开连接
- 主机 A 发送
FIN
(请求切断连接),主机 B 收到后回复 ACK 和 FIN 包
,主机 A 收到主机 B 的 FIN 和 ACK 后发送 ACK 包.
TCP首部
-
序列号码
- 如果含有 SYN,则此为最初序列号
- 如果没有 SYN,则此为第一个数据字节的序列号
-
确认号码
,期望收到的数据的开始序列号。 -
检验和
,对整个 TCP 报文段,包括头部和数据以16位字进行计算所得,这时一个强制性字段
UDP头部
-
报文长度
,指定 UDP 报头和数据总共占用的长度。 -
检验和
,用于发现头部信息和数据中的传输错误,该字段在 IPv4中可选, IPv6中强制。
来源:CSDN
作者:今天星期八
链接:https://blog.csdn.net/Missbelover/article/details/103704433