JAVAEE初阶相关内容第十八弹--网络原理之TCP_IP【续集】

写在前

上一篇博客的重点内容主要讲了关于传输层的TCP协议、UDP协议。

点击跳转上一篇博客

重点介绍了协议的特点、协议端格式、需要重点理解并掌握TCP的工作机制(十条)。

TCP与UDP对比?

TCP用于可靠传输的情况,应用于文件传输,重要状态更新等场景。

UDP用于对高速传输和实时性要求较高的通信领域,例如,早期的QQ,视频传输等,另外,UDP还可以用于广播【同一机房内部,天然支持广播-- IP地址中有一种特殊的地址"广播IP"通过UDP往广播上发送数据报,此时该局域网内所有的设备都能收到数据。】

传输层的协议并非只有这两个,例如有的是专门为了游戏打造的,典型协议:KCP。
本篇博客将重点介绍网络层协议-IP

目录

网络层协议代表-IP协议

[1. 协议头格式](#1. 协议头格式)

[2. 点分十进制](#2. 点分十进制)

[3. 关于IP地址不够用问题的解决办法](#3. 关于IP地址不够用问题的解决办法)

(1)动态分配IP

(2)NAT网络地址转换

(3)IPV6

[4. IP协议-地址管理](#4. IP协议-地址管理)

[4.1 网络号](#4.1 网络号)

[4.2 主机号](#4.2 主机号)

[4.3 子网掩码](#4.3 子网掩码)

[5. IP协议-路由选择](#5. IP协议-路由选择)


网络层协议代表-IP协议

在复杂的网络环境中确定一个合适的路径。

1. 协议头格式

地址管理、路由选择。

对"16位总长度"的理解

16位总长度是不是意味着一个IP数据报,最大只能支持64KB?

确实是有这个限制的,相当于一个快递公司一次最大只能给运输64kg的快递,但是,IP自身就支持对包的拆分和组装。一个IP数据报携带的数据载荷太大了,超过了64KB,就会在网络层针对数据进行拆分,把一个数据拆分成多个IP数据报,再分别发送,接收方再重新拼装。

IP协议中最重要的部分:32位源IP,32位目的IP

2. 点分十进制

此处看到的IP地址是32位整数,但是日常见到的IP则是一串数字,使用三个点把32位4个字节的数字分隔开,每个部分分别使用0-255的十进制数字进行表示。

3. 关于IP地址不够用问题的解决办法

32位数字,只能表示42亿9千万个数字,我们期望使用这个表示全世界所有的上网设备。为了解决IP地址不够用的问题,想了很多办法。

(1)动态分配IP

提高利用率,指标不治本

(2)NAT网络地址转换

使用1个IP地址代表一批网络设备【端口号区分】

关于内网和外网:

NAT背景下把IP地址分成了两大类:内网IP和外网IP

内网IP【私有IP】:10.开头的、172.16.*-172.31.*、192.168.*

外网IP【公网IP】: 除了内网IP外的都是外网IP。

NAT要求:公网IP必须是唯一的,内网IP可以在不同的局域网中重复出现。如果某个私网里的设备想访问公网的设备,就需要对应的NAT设备【路由器】,把IP地址进行映射,从而完成网络访问。反之,公网的设备,无法直接访问私网的设备,不同局域网的私网设备没法直接进行相互访问。

NAT机制能够有效的解决IP不够用的问题,但是带来的副作用就是网络的环境更加复杂了。

(3)IPV6

根本上解决了IP不够用的问题,使用16位字节表示IP地址。

虽然IPV6看起来是美好的,但是当前世界上仍然是以NAT+IPV4+动态分配来进行网络组建的。真正使用IPV6的地方非常少。

主要原因是IPV6贵,IPV6与IPV4还不兼容。

4. IP协议-地址管理

把一个IP地址分成了两部分,一个叫网络号,一个叫主机号。

4.1 网络号

表示网段,保证相互连接的两个网段具有不同的标识。

4.2 主机号

标识主机,同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号。

193.168.0.10 -- 网络号:192.168.0 主机号:10

划分网络号和主机号就是为了组网。

4.3 子网掩码

子网掩码格式和IP地址格式一样,也是32位的二进制数,其中左边是网络位,用二进制"1"表示,1的数目等于网络位长度。右边是主机位,用二进制"0"表示,0的数目等于主机位长度。对于家用设备来说,子网掩码最常见的就是255.255.255.0。

作用:划分A、B、C三类IP地址子网;网络通信时,子网掩码会结合IP地址,可以计算获得网络号(划分子网后的网络号)及主机号(划分子网后的主机号)。一般用于判断目的IP与本IP是否为同一个网段。

5. IP协议-路由选择

路径规划

核心思路--问路。每个路由器都会保存一定的周围设备的信息(路由表)。每次有一个IP数据报经过路由器。就需要匹配路由表,看看接下来咋走。如果路由表上有匹配的选项【该路由器认识路】,直接按照要求走就可以。如果没有匹配的选项【不认识路】,会提供一个默认路径,大体方向是不会错的。每次经过一个路由器问一次,TTL-1。如果减到0还没到,就说明永远都到不了,这个地址没人知道,就被丢弃了。

相关推荐
快乐就好ya31 分钟前
Java多线程
java·开发语言
IT学长编程36 分钟前
计算机毕业设计 二手图书交易系统的设计与实现 Java实战项目 附源码+文档+视频讲解
java·spring boot·毕业设计·课程设计·毕业论文·计算机毕业设计选题·二手图书交易系统
CS_GaoMing1 小时前
Centos7 JDK 多版本管理与 Maven 构建问题和注意!
java·开发语言·maven·centos7·java多版本
艾伦~耶格尔2 小时前
Spring Boot 三层架构开发模式入门
java·spring boot·后端·架构·三层架构
麻辣韭菜2 小时前
网络基础 【HTTP】
网络·c++·http
man20172 小时前
基于spring boot的篮球论坛系统
java·spring boot·后端
2401_858120532 小时前
Spring Boot框架下的大学生就业招聘平台
java·开发语言
S hh2 小时前
【Linux】进程地址空间
java·linux·运维·服务器·学习
Java探秘者2 小时前
Maven下载、安装与环境配置详解:从零开始搭建高效Java开发环境
java·开发语言·数据库·spring boot·spring cloud·maven·idea
攸攸太上2 小时前
Spring Gateway学习
java·后端·学习·spring·微服务·gateway