纯硬件角度:
网卡(network interface)
数据的发送:首先需要填充数据,然后经过把数字信号转化为物理信号后,把数据发送出去。
数据的接收:先接受数据,中断通知有数据到达了,数据复制
2.数据在我们主机内部是怎么被处理的(发送、接收)
进程控制的内存 -> 网卡
网络分层:学院派:OSI 7层
实际派:TCP/IP 5层:应用层、传输层、网络层、数据链路层、物理层
3.局域网(Local Area Network LAN)国家 省 市
集线器(hub)数据的完整复制
hub:只负责进行数据的复制,所有主机都会收到。为了让只有目标主机收到数据。我们需要在数据中携带 关于 目标主机的信息(协议)
协议是在数据链路层使用的
hub:不知道数据链路层的数据格式,所以是工作在数据链路以下的——物理层
(1)基于网线的直连
(2)基于集线器组建
数据冲突:在线路上同时有多条数据在发送,就会出现冲突
冲突避让:一个一个来,如果在线路上发现有数据在发送了,那么就随机休眠一段时间,重新发送
存在冲突的区域叫冲突域
(3)基于交换机组建
交换机 是知道数据发给谁 —— 工作在数据链路层
这样就避免了冲突
使用 hub、switch 实现 LAN 的组网工作
数据链路层:实现了一个 LAN 内部的主机通信
( 4 )基于交换机和路由器组建路由是划分 LAN 的设备,路由同时属于多个 LAN
路由器工作在网络层:实现了跨LAN 的主机和主机之间进行通信
| 应用层 | 处理具体的业务 | 商家 | |
| 传输层 | 跨 LAN 进程 to 进程 | 快递公司 | |
| 网络层 | 路由器 | 跨 LAN 主机 to 主机 | 物流公司、运输公司 |
| 数据链路层 | 交换机 | LAN 内部 主机 to 主机 | 物流公司、运输公司 |
| 物理层 | 集线器 | 解决传输介质通信的问题 | 修路 |
通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了广域网。广域网内部的局域网都属于其子网。
5.网络通信基础MAC 地址:硬件地址,网卡生产中绑定的一个地址 物理地址。数据链路层在使用
IP 地址:网络层在使用 软件地址 在一个网络中,主机的 ip 地址唯一
端口(port):主机内部的,唯一标识
一个网络中,MAC 和 IP 绑定唯一的主机
ip 在网络中,唯一确定了一个主机
port 在一个主机中,唯一确定一个进程
ip + port : 网络中的唯一一个进程
当一个东西发送到另一个地方时:会有来源IP、来源port、目标IP、目标port。四个信息可以唯一确定网络中的一个通信线路(带着方向)
四元组信息:传输
传输层:UDP/TCP
四元组 + 协议 = 五元组
ip 工作在网络层,只有网络层 + 网络层以上的设备有ip(路由器和主机)
交换机、集线器没有ip地址
一个进程可以绑定多个port。一个端口只能被一个进程绑定。(是进程不是程序)
| 应用层:HTTP/HTTPS/DNS |
| 传输层:UDP/TCP |
| 网络层:IP/ICMP/ARP |
| 应用层 HTTP/HTTPS/DNS | 用户态 | 用户业务问题 | ||
| 传输层 UDP/TCP | 内核态 | 进程 to 进程 | 端口(port) | |
| 网络层 IP | 内核态 | 跨LAN 的 主机 to 主机 | 路由器 | IP |
| 数据链路层 | 内核态 | LAN 内部的 主机 to 主机 | 交换机 | MAC |
| 物理层 | 硬件 | 物理介质上的传输 | 集线器 |
封装:
分用/解包:
数据链路层/以太网:把数据称为帧
网络层/IP:把数据称为包
传输层:
- UDP:报文
- TCP:段
应用层:
- 请求-响应模型 发送请求的角色——客户端 发送响应的角色——提供服务(服务器)客户端主导
- 订阅-推送模型 客户端(订报纸)- 服务器(推送新消息)服务器主导
1.数据,在线路中任意设备都可以看到,理论都可以修改。可以被监听、篡改。
2.数据发送过程中,不可靠。对方不一定收到;即使收到,数据能保证没被修改。
3.网络层,去的路和回来的路不一定是同一条路。
8.数据传输:
(1)一个局域网:
主机1这里有人要发送一个消息(“hello”)给主机3的人
主机1经过应用、传输、网络、链路层层封装之后把数据传给集线器,集线器再把数据分别给主机2和主机3
主机2去读取链路层数据时,发现这个数据不是发给他的,就会把数据丢弃
主机3发现这个数据就是发送给自己的,因此主机3进行解包的过程:链路层的数据拆下来,剩余的送给上一层网络层,同理一直解包。
(2)跨局域网:
要从乾县去大荔,虽然不知道是怎么走的,但是肯定不是去泾阳,所以小明先去咸阳。
到咸阳之后,可以问咸阳的人,咸阳的人可以读取数据,看是不是发给自己的,如果是,咸阳的就可以根据长期目标来设定此时新的短期目标。然后新的短期目标去西安,到了西安之后,西安收到消息,得出新的目标,去大荔,如此就成功的传送了数据。


![[Java Web] 网络原理基础知识 [Java Web] 网络原理基础知识](http://www.mshxw.com/aiimages/31/892057.png)
