计算机网络基础知识随记
最近复习了一下计算机网络基础知识,觉得将总结的要点记录下来,以待将来。
- 网络拓扑结构
- 星型拓扑结构
- 网型拓扑结构
- IP地址
- 32位2进制数字,每八位用点分隔。
- IP地址分为网络部分和主机部分。
- IP地址分为A/B/C/D/E五类,A/B/C最常见。
- A类地址:8bits network | 24bits host 第一个八位组范围:00000000~01111111 :0~127 首尾保留:故A类地址有效范围为:1~126.主机部分也不能全为0或全为1,(全0为网络ID,全1为本网络广播地址)。最大可用主机数:224-2
- B类地址:16bits network | 16bits network 网络范围:10000000.00000000~10111111.11111111:128~191,最大可用主机数为:216-2.
- C类地址:24bits network | 8bits host 网络范围:11000000.00000000.00000000~11011111.11111111.11111111:192~223 ,最大可用主机数为:28-2.
- D类地址:组播通信地址。
- E类地址:科学研究保留地址。
- 私有地址:(企业内网使用,不能在Internet上使用)
- 10.0.0.0~10.255.255.255
- 172.16.0.0~172.31.255.255
- 192.168.0.0~192.168.255.255
- 子网掩码
- 网络地址相同的两个IP:同一网段
- 网络地址不同的两个IP:不同网段
- 子网掩码:对应IP中网络部分用1表示,主机部分用0表示
- 子网掩码 && IP地址 = 网络地址
- OSI参考模型
- 应用层:
- 表示层:数据表示,安全,压缩
- 会话层:Token
- 传输层:进程选择、端口号
- 网络层:IP地址
- 数据链路层:MAC地址
- 物理层:
- TCP.IP五层模型
- 应用层:HTTP/FTP/TFTP/SMTP/SNMP/DNS
- 传输层:TCP/UDP
- 网络层:IP:ARP/RARP/ICMP/IGMP
- 数据链路层:
- 物理层
- 数据封装过程
- 应用层:转为二进制
- 传输层:将上层数据分段,封装TCP报文头部,TCP头部有端口号
- 网络层:将上层数据封装IP头部,IP头部中包含目标IP与源IP
- 数据链路层:将上层数据封装MAC头部,包含目标MAC地址与源MAC地址
- 物理层:传输信号
- 数据解封过程
- 物理层:将电信号转为二进制,传至数据链路层
- 数据链路层:查看目标MAC地址,相同则拆掉MAC头部,将剩余数据传上层,不同则丢弃数据。
- 网络层:查看目标IP地址,相同则拆掉IP头部,将剩余数据传至上层,不同则丢弃数据。
- 传输层:根据TCP头部判断送往那个应用程序,然后将分组数据段充足送往应用层。
- 应用层:解码二进制数据,进行还原操作。
- 网络中各层典型设备
- 应用层:计算机
- 传输层:防火墙
- 网络层:路由器
- 数据链路层:交换机
- 物理层:网卡
- TCP/UDP协议
- TCP协议
- TCP报文段
- TCP将若干字节构成一个分组,称为报文段。TCP报文段封装在IP数据报中。
- TCP报文段首部长度20~60字节,各字段含义如下:
-
- 源端口号:16位字段,为发送方进程对应的端口号。
- 目标端口号:16位字段,对应的是接收端的进程。
- 序号:当TCP从进程接收数据字节时,把它们存储在发送缓存中,并对每一个字节进行编号。当所有字节都被编号后,TCP就给每个报文段指派一个序号,就是该报文段中第一个字节的编号。当数据到达目的地后,接收端会按照这个序号将数据重新排列,保证数据的正确性。
- 确认号:确认号是对发送端的确认信息,用它告诉发送端这个序号之前的数据段都收到。
- 首部长度:20~60字节。
- 保留:暂未用到。
- 控制位:
- URG:紧急指针有效位
- ACK:只有当此位为1,确认序列号字段才有效。
- PSH:标志位为1时要求接收方尽快将数据段送达应用层。
- RST:当此位为1时通知重新建立TCP连接。
- SYN:同步序号位,需要建立TCP连接时将这个值设为1.
- FIN:需要断开连接时,提出断开连接方将此设为1.
- 窗口值:网络通畅时可将窗口值变大加快传输速率,网络不佳时将窗口值变小保证可靠传输。
- 校验和:发送端计算校验和,当数据到达目的地时再计算一次,相同则认为数据基本正确,否则将数据丢弃。
- 紧急指针:和URG配合使用,当URG为1时有效。
- 选项:在TCP首部可有多达40字节的可选信息。
- TCP连接:
- 建立连接(三次握手)
- 第一次握手:发送端SYN控制位置1,其余5位都为0.
- 第二次握手:分两步
- 接收端收到发送端请求,向发送端回复确认信息,TCP的ACK置1,其余5位为0,而且确认序列号是发送的初始序列号+1.
- 接收端也向发送端发送建立连接的请求,和第一次握手一样,SYN置1,其余5位为0.
- 注:为了提高效率,一般这两步放在一个数据包里实现。
- 第三次握手:发送端接收到接收端回复,也要向其回复一个确认信息,TCP的ACK置1,其余5位为0,确认序列号是接收端初始序列号+1.
- 切断连接(四次握手)
- 发送端向客户端发送FIN和ACK置1的TCP报文段。
- 接收端向发送端返回ACK置1的TCP报文段。
- 接收端向发送端发送FIN和ACK置1的TCP报文段。
- 发送端向接收端返回ACK置1的TCP报文段。
- 建立连接(三次握手)
- UDP协议
- 可靠性差,可靠性由上层协议保证。
- 结构简单,传输时开销小。
暂时总结到这里,谢谢~