JAVA EE初阶---DAY 2 计算机网络

本系列可作为JAVAEE初阶学习系列的笔记,文中提到的一些练习的代码,小编会将代码复制下来,大家复制下来就可以练习了,方便大家学习。

点赞关注不迷路!您的点赞、关注和收藏是对小编最大的支持和鼓励!

系列文章目录

JAVA初阶---------已更完

JAVA数据结构---------已更完

数据库已更完-----------已更完

JAVA EE初阶---DAY 1 计算机是如何工作的

JAVA EE初阶---DAY 2 计算机网络


目录

目录

系列文章目录

目录

前言

一、网络发展史

[1.1 独立模式](#1.1 独立模式)

独立模式的问题

二、网络互连

网络互连本质

[三、局域网 LAN](#三、局域网 LAN)

[3.1 什么是局域网](#3.1 什么是局域网)

[3.2 局域网特点](#3.2 局域网特点)

[3.3 局域网组建方式](#3.3 局域网组建方式)

第一种:网线直连

[第二种:集线器 Hub](#第二种:集线器 Hub)

[第三种:交换机 Switch](#第三种:交换机 Switch)

第四种:交换机+路由器

[四、广域网 WAN](#四、广域网 WAN)

[4.1 什么是广域网](#4.1 什么是广域网)

[4.2 互联网是什么](#4.2 互联网是什么)

五、网络通信基础

六、IP地址

[6.1 为什么需要IP](#6.1 为什么需要IP)

[6.2 IP地址作用](#6.2 IP地址作用)

[6.3 IP地址格式](#6.3 IP地址格式)

[6.4 为什么每段最大255](#6.4 为什么每段最大255)

[七、端口号 Port](#七、端口号 Port)

[7.1 为什么需要端口](#7.1 为什么需要端口)

[7.2 端口作用](#7.2 端口作用)

[7.3 端口范围](#7.3 端口范围)

[八、协议 Protocol](#八、协议 Protocol)

[8.1 为什么需要协议](#8.1 为什么需要协议)

[8.2 协议定义](#8.2 协议定义)

[8.3 协议的现实例子](#8.3 协议的现实例子)

九、五元组

五元组组成

举例

快递理解法

十、查看五元组

十一、协议分层思想

为什么要分层

分层好处

低耦合

高扩展

易维护

十二、OSI七层模型

七层结构

应用层

表示层

会话层

传输层

网络层

数据链路层

物理层

十三、TCP/IP五层模型

五层结构

应用层

传输层

网络层

数据链路层

物理层

十四、网络设备工作在哪一层

[集线器 Hub](#集线器 Hub)

[交换机 Switch](#交换机 Switch)

[路由器 Router](#路由器 Router)

十五、封装与分用(面试高频)

封装

封装口诀

十六、分用

第一步

第二步

第三步

第四步

第五步

十七、面试总结(必须背下来)

IP和端口区别

为什么需要协议

五元组

OSI七层

TCP/IP五层

设备工作层次

封装与分用

总结

总结


前言

小编作为新晋码农一枚,会定期整理一些写的比较好的代码,作为自己的学习笔记,会试着做一下批注和补充,如转载或者参考他人文献会标明出处,非商用,如有侵权会删改!欢迎大家斧正和讨论!

很多同学刚接触网络时都会有这样的疑问:

  • 微信消息为什么能发送到别人手机?

  • 浏览器输入网址之后发生了什么?

  • IP地址到底是什么?

  • 为什么还需要端口号?

  • TCP/IP 和 OSI 七层模型有什么区别?

  • 路由器、交换机分别工作在哪一层?

这些问题看似复杂,其实都建立在网络原理的基础之上。

学习网络最重要的一件事:

理解数据是如何从一台计算机传输到另一台计算机的。

掌握这一点之后:

  • Socket编程

  • TCP/IP协议

  • HTTP协议

  • Web开发

  • 分布式系统

  • 云计算

都会变得容易理解。

一、网络发展史

1.1 独立模式

最早期的计算机是彼此独立工作的。

例如:

复制代码
计算机A
计算机B
计算机C

三台机器之间互不通信。

每台机器:

  • 保存自己的数据

  • 运行自己的程序

  • 互相不知道对方存在

这种模式称为:

独立模式(Standalone Mode)

独立模式的问题

假设:

小松在电脑A工作

小竹在电脑B工作

小梅在电脑C工作

如果需要共享数据:

复制代码
A → U盘 → B

只能通过人工拷贝。

问题:

  • 效率低

  • 数据不一致

  • 协同困难

因此出现了网络。

二、网络互连

随着业务的发展,人们希望:

  • 共享软件

  • 共享数据

  • 多台计算机协同工作

于是出现:

网络互连(Network Interconnection)

网络互连本质

很多同学认为:

复制代码
网络 = 上网

其实不是。

网络本质:

复制代码
数据传输

即:

复制代码
计算机A
    ↓
网络
    ↓
计算机B

把数据传过去。

因此:

数据共享的本质就是网络数据传输。

三、局域网 LAN

3.1 什么是局域网

LAN:

复制代码
Local Area Network

即:

复制代码
局域网

特点:

  • 本地网络

  • 私有网络

  • 范围较小

例如:

  • 家庭网络

  • 学校机房

  • 公司办公室

都属于局域网。

3.2 局域网特点

局域网中的主机:

复制代码
PC1
PC2
PC3

可以方便通信。

因此局域网又叫:

复制代码
内网

不同局域网之间:

复制代码
LAN1
LAN2

如果没有连接:

复制代码
不能通信

3.3 局域网组建方式

课件介绍了四种方式。

第一种:网线直连

复制代码
PC1 ----- PC2 ----- PC3

优点:

  • 简单

缺点:

  • 扩展困难

  • 管理困难

第二种:集线器 Hub

复制代码
       Hub
      / | \
     /  |  \
   PC1 PC2 PC3

特点:

  • 所有数据广播

例如:

PC1发送数据

复制代码
Hub
 ↓↓↓
PC1 PC2 PC3

全部收到。

第三种:交换机 Switch

复制代码
       Switch
      /  |   \
     /   |    \
   PC1  PC2  PC3

交换机比Hub智能。

它知道:

复制代码
谁是谁

因此:

复制代码
定向转发

效率更高。

第四种:交换机+路由器

企业网络常见结构:

复制代码
        Router
         / \
        /   \
   SwitchA SwitchB

形成多个网段。

四、广域网 WAN

4.1 什么是广域网

WAN:

复制代码
Wide Area Network

即:

复制代码
广域网

多个局域网通过路由器连接起来形成的大型网络。

例如:

复制代码
北京公司
上海公司
深圳公司

通过专线连接。

形成:

复制代码
WAN

4.2 互联网是什么

互联网:

复制代码
Internet

其实也是:

复制代码
广域网

只不过是:

复制代码
全球最大的广域网

课件中特别强调:

互联网属于广域网的一个子集。

五、网络通信基础

网络互连的目的:

复制代码
通信

进一步说:

复制代码
进程与进程之间通信

而不是:

复制代码
电脑与电脑通信

本质:

复制代码
QQ进程
↓
微信进程
↓
浏览器进程

之间的数据交换。

六、IP地址

6.1 为什么需要IP

假设快递:

复制代码
寄给张三

首先需要:

复制代码
地址

网络同理。

必须知道:

复制代码
发送给哪台主机

因此需要:

复制代码
IP地址

6.2 IP地址作用

IP:

复制代码
Internet Protocol Address

作用:

复制代码
定位主机

即:

复制代码
网络中的门牌号

6.3 IP地址格式

IPv4:

复制代码
32位二进制

例如:

复制代码
01100100
00000100
00000101
00000110

写作:

复制代码
100.4.5.6

称:

复制代码
点分十进制

6.4 为什么每段最大255

因为:

复制代码
8位二进制

最大:

复制代码
11111111

即:

复制代码
255

所以:

复制代码
0~255

七、端口号 Port

7.1 为什么需要端口

有了IP只能找到电脑。

例如:

复制代码
192.168.1.100

但是电脑中运行:

复制代码
微信
QQ
浏览器
IDEA
MySQL

到底给谁?

需要:

复制代码
端口号

7.2 端口作用

端口:

复制代码
定位进程

所以:

复制代码
IP = 找电脑
Port = 找程序

7.3 端口范围

复制代码
0 ~ 65535

因为:

复制代码
16位

最大:

复制代码
2^16 - 1
=
65535

八、协议 Protocol

8.1 为什么需要协议

网络上传输:

复制代码
010101010101

接收方怎么知道:

  • 是图片?

  • 是视频?

  • 是文本?

不知道。

所以:

复制代码
双方必须约定格式

这就是协议。

8.2 协议定义

协议:

复制代码
Protocol

即:

复制代码
网络通信规则

包括:

  • 如何连接

  • 如何识别

  • 如何传输

最终体现:

复制代码
数据包格式

8.3 协议的现实例子

见网友:

复制代码
胸前插玫瑰花

双方提前约定:

复制代码
玫瑰花 = 接头暗号

这就是协议。

九、五元组

TCP/IP中:

一个网络通信由五元组唯一确定。

五元组组成

复制代码
源IP
源端口
目的IP
目的端口
协议号

举例

微信发送消息:

复制代码
源IP:
192.168.1.100

源端口:
50000

目的IP:
42.156.xxx.xxx

目的端口:
443

协议:
TCP

这五个信息一起:

复制代码
唯一标识一次通信

快递理解法

复制代码
寄件地址
寄件人

收件地址
收件人

快递公司

对应:

复制代码
源IP
源端口

目的IP
目的端口

协议

课件专门用快递进行了类比。

十、查看五元组

Windows:

复制代码
netstat -ano

查看:

  • IP

  • Port

  • 状态

  • PID

过滤:

复制代码
netstat -ano | findstr 8080

查看指定端口。

十一、协议分层思想

为什么要分层

网络太复杂。

如果所有内容写一起:

复制代码
10万行代码

无法维护。

因此:

复制代码
分层

课件把它类比为:

复制代码
面向接口编程

分层好处

低耦合

调用者:

复制代码
service.login()

不用关心实现。

高扩展

修改底层:

复制代码
WiFi
↓
5G

应用层不变。

易维护

出现问题:

复制代码
定位到具体层

即可。

十二、OSI七层模型

OSI:

复制代码
Open System Interconnection

开放系统互连模型。

七层结构

复制代码
7 应用层
6 表示层
5 会话层
4 传输层
3 网络层
2 数据链路层
1 物理层

应用层

面向应用。

协议:

  • HTTP

  • FTP

  • SMTP

功能:

复制代码
直接服务用户

表示层

负责:

复制代码
编码转换
格式转换
加密解密

会话层

负责:

复制代码
建立会话
维持会话
关闭会话

传输层

负责:

复制代码
可靠传输

典型协议:

复制代码
TCP
UDP

网络层

负责:

复制代码
IP寻址
路由选择

典型协议:

复制代码
IP

数据链路层

负责:

复制代码
帧传输
差错检测
MAC地址

物理层

负责:

复制代码
光信号
电信号
无线电波

十三、TCP/IP五层模型

OSI太复杂。

现实世界真正使用:

复制代码
TCP/IP模型

五层结构

复制代码
应用层
传输层
网络层
数据链路层
物理层

应用层

协议:

复制代码
HTTP
HTTPS
FTP
SMTP
DNS

程序员最常接触的一层。

传输层

协议:

复制代码
TCP
UDP

功能:

复制代码
可靠传输

网络层

协议:

复制代码
IP

功能:

复制代码
寻址和路由

数据链路层

协议:

复制代码
以太网
802.11(WiFi)

负责:

复制代码
局域网传输

网线/光纤对应以太网协议,WiFi对应802.11协议,本质都属于数据链路层协议。

物理层

负责:

复制代码
0和1的传输

介质:

  • 网线

  • 光纤

  • 电磁波

十四、网络设备工作在哪一层

集线器 Hub

工作:

复制代码
物理层

只负责转发电信号。

交换机 Switch

工作:

复制代码
数据链路层

二层转发。

复制代码
交换机 = 二层设备

路由器 Router

工作:

复制代码
网络层

三层转发。

复制代码
路由器 = 三层设备

十五、封装与分用(面试高频)

这是网络最核心知识之一。

课堂笔记中专门用 QQ 消息进行了完整演示。

封装

发送:

复制代码
hello

应用层:

复制代码
hello

TCP层加头

复制代码
TCP头
hello

IP层加头

复制代码
IP头
TCP头
hello

以太网层加头尾

复制代码
帧头
IP头
TCP头
hello
帧尾

转成:

复制代码
01010101

发送。

封装口诀

复制代码
层层加头
最后发走

十六、分用

接收方过程相反。

第一步

网卡收到:

复制代码
01010101

恢复数据。

第二步

数据链路层解析:

复制代码
帧头
帧尾

去掉。

第三步

网络层解析:

复制代码
IP头

去掉。

第四步

传输层解析:

复制代码
TCP头

去掉。

第五步

应用层得到:

复制代码
hello

显示给用户。

课堂笔记将此过程称为:

复制代码
分用

十七、面试总结(必须背下来)

IP和端口区别

IP:

复制代码
定位主机

端口:

复制代码
定位进程

为什么需要协议

复制代码
统一数据格式

五元组

复制代码
源IP
源端口
目的IP
目的端口
协议号

OSI七层

复制代码
应用
表示
会话
传输
网络
数据链路
物理

口诀:

复制代码
应表会传网数物

TCP/IP五层

复制代码
应用
传输
网络
数据链路
物理

设备工作层次

设备 工作层
Hub 物理层
Switch 数据链路层
Router 网络层

封装与分用

发送:

复制代码
应用层
↓
传输层
↓
网络层
↓
链路层
↓
物理层

接收:

复制代码
物理层
↑
链路层
↑
网络层
↑
传输层
↑
应用层

总结

学习网络原理最重要的主线只有一句话:

数据如何从一个进程,经过协议栈、网络设备和传输介质,最终到达另一个进程。

整个过程涉及:

  1. IP地址定位主机;

  2. 端口号定位进程;

  3. 协议规定数据格式;

  4. 五元组唯一标识通信;

  5. TCP/IP协议栈负责分层处理;

  6. 交换机负责二层转发;

  7. 路由器负责三层转发;

  8. 数据通过封装与分用完成跨网络传输。

掌握这些内容后,你就具备了学习:

  • Socket编程

  • TCP/IP

  • HTTP

  • Netty

  • Linux网络编程

  • 分布式系统

的基础。

适合收藏背诵的一句话:

网络通信 = IP定位主机 + Port定位进程 + Protocol规定格式 + TCP/IP协议栈完成数据传输。


总结

以上就是今天要讲的内容,本文简单记录了数据结构学习内容,仅作为一份简单的笔记使用,大家根据注释理解,您的点赞关注收藏就是对小编最大的鼓励!

相关推荐
子豪-中国机器人1 小时前
Python 阶段性综合强化训练(新版)
开发语言·python·语音识别
z落落1 小时前
C# WinForm TreeView 树形控件+ListView控件+菜单栏
开发语言·c#
码云数智-园园1 小时前
码云数智网站SEO设置指南:如何让百度搜索到你的网站
开发语言
赴生-1 小时前
C++进阶 智能指针
开发语言·c++
潇凝子潇1 小时前
IDEA插件
java·ide·intellij-idea
摇滚侠1 小时前
SSM 框架实战教程 SpringBoot 自动配置 176-179
java·spring boot·后端
chao1898441 小时前
GNSS软件接收机 MATLAB 实现(GPS L1 CA码)
开发语言·matlab
JAVA9651 小时前
JAVA面试-JVM篇 02-G1垃圾收集器的工作原理是什么与CMS的区别
java·jvm·面试
ywl4708120871 小时前
spring单列bean之循环依赖核心源码解读
java·后端·spring