5.简单的网络协议(上)
一、互联网
思考:数据是如何从一个设备传递到另一个设备的?–都是由网络协议来规定的
1、为什么要学习网络协议?
互联网、移动互联网、物联网,都离不开网络协议
最熟悉的网络协议:HTTP
为了满足各种需求,有各式各样的网络协议(HTTPS、SMTP、MQTT、RTMP等)
面试题:
TCP和UDP的区别?说一下他们的报文格式
TCP的流量控制和拥塞控制?TCP如何实现可靠性传输?
为什么连接是3次握手,关闭是4次挥手?
7层模型与4层模型的区别?每一层的作用是什么?
交换机与路由器的区别?
2、学习中需要搭建的环境
客户端-服务器开发环境:
客户端:浏览器(HTML+CSS+JS)
服务器:Java
网络抓包:
浏览器(Chrome、Firefox)、Fiddler、Wireshark
模拟工具:
Xshell、Packet Tracer、GNS3
3、网络互连模型
OSI(Open System Interconnect)参考模型,具有7层模型
OSI模型是一种国际标准
TCP/IP协议模型是一种实战模型
二、Java服务器与客户端简单连接
http://IP地址:端口号/资源路径
http://127.0.0.1:8080/hello
默认访问的是web中的index.jsp文件
登录页面:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登录</title>
</head>
<body>
<form action="http://www.baidu.com">
<div>用户名<input name="username"></div>
<div>密码<input name="password"></div>
<button type="submit">登录</button>
</form>
</body>
</html>
注:type = “submit”—>将用户名和密码传给服务器
action=“http://www.baidu.com”—>代表想发给谁
package com.wj.servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @ClassName LoginServlet
* @Description 处理登陆请求
* 1.继承HttpServlet,才能处理HTTP请求
* 2.使用@WebServlet,说明它要处理的请求路径
**/
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
/**
*
* @param req:request 请求:用来获取客户端发送的额数据
* @param resp:response 响应:用来给客户端返回数据
* @throws ServletException
* @throws IOException
*/
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1.获取客户端发送的数据(请求参数)
String username = req.getParameter("username");
String password = req.getParameter("password");
System.out.println(username + "_" + password);
//2.判断
if ("123".equals(username) && "456".equals(password)){
//登录成功
resp.getWriter().write("Login Success!");
}else {
//登录失败
resp.getWriter().write("Login Failure!");
}
}
}
客户端:
服务器:
三、计算机之间的通信基础
需要得知对方的IP地址
最终根据MAC地址(网卡地址),输送数据到网卡,被网卡接收
①如果网卡发现数据的目标MAC地址是自己,就会将数据传递给上一层进行处理
②如果网卡发现数据的目标MAC地址不是自己,就会将数据丢弃,不会传递给上一层进行处理
3.1 计算机之间的连接方式–网线直连
测试两台电脑之间是否能直接连接
结果:
ARP协议(广播):广播是在同一网段中传播
特点:
需要用交叉线(不是直通线)
3.2 计算机之间的连接方式–同轴电缆(Coaxial)
特点:
半双工通信:通道在同一时间内只允许同一方向进行通信
容易冲突
不安全
没有智商
3.3 计算机之间的连接方式–集线器(Hub)
模拟:
特点:
半双工通信
容易冲突
不安全
“没有智商”
两台计算机之间通信不会受其他计算机影响
3.4 计算机之间的连接方式–网桥(Birdge)
网桥内部有MAC地址表(分左右):
特点:
能够通过自学习得知每个接口那侧的MAC地址
从而起到隔绝冲突域的作用
3.5计算机之间的连接方式–交换机(Switch)
特点:
相当于接口更多的网桥
全双工通信
比集线器安全
交换机是局域网的最终方案
思考:
如果全球所有的设备都用交换机连接会是什么情况?
3.6 计算机之间的连接方式–路由器(Router)
网线直连、同轴电缆、网桥、交换机的共同点:
连接的设备必须在同一网段
连接的设备处在同一广播域
路由器:
可以在不同网段之间转发数据
隔绝广播域
主机发数据之前,首先会判断目标主机的IP地址跟它是否在同一个网段
1)在同一个网段:发送一个ARP广播,然后通过交换机或集线器传递数据
2)不在同一个网段:通过路由器转发数据
网关(Gateway):路由器两端各有一个网关,用来连接不同网段的计算机
有网关后,发送ARP的意义是:获取网关的MAC地址
四、MAC地址
每一个网卡都有一个6字节(48bit)的MAC地址(Media Access Control Address)
全球唯一,固化在了网卡的ROM(存储空间)中,由IEEE802标准规定
前3个字节:OUI,组织唯一标识符,由IEEE的注册管理机构分配给厂商
后三个字节:网络接口标识符,由厂商自行分配
如:
4.1 MAC地址的表示格式
4.2 MAC地址操作
查看MAC地址:ipconfig/all
修改MAC地址:
更改适配器选项 - 属性 - 配置 - 高级 - 网络地址
填写时需要把减号(-)去掉
有时可以通过MAC地址蹭网
4.3 MAC地址的获取
当不知道对方主机的MAC地址时,可以通过发送ARP广播获取对方的MAC地址
获取成功后,会缓存IP地址、MAC地址的映射信息,俗称:ARP缓存
通过ARP广播获取的是MAC地址,属于动态(dynamic)缓存
存储时间比较短(默认是2分钟),过期了就会自动删除
相关命令:
arp -a [主机地址]:查询ARP缓存
arp -d [主机地址]:删除ARP缓存
arp -s 主机地址 MAC地址:增加一条缓存信息(这是静态缓存,存储时间较久,不同系统的存储时间不同)
五、IP地址
详见博客:https://blog.csdn.net/weixin\_44116098/article/details/117675992
六、路由
6.1 概念+练习
在不同网段之间转发数据,需要有路由器支持
默认情况下,路由器只知道跟它直连的网段,非直连的网段需要通过静态路由、动态路由告诉它
6.1.1 练习1–让4台主机之间可以互相通信
路由器0的路由表
6.1.2 让4台主机之间可以互相通信
6.2 数据包的传输过程
6.3 网络、互联网、因特网
6.4 ISP
ISP,Internet Service Provider,Internet服务提供商,如移动、电信、网通、铁通等
平时拉的宽带都是通过ISP连接到Internet的
6.5 服务器机房
6.6 网络分类
按照网络的范围分:局域网、城域网、广域网
6.6.1 局域网(Local Area Network,LAN)
一般是范围在几几百米到十几公里内的计算机所构成的计算机网络
常用于公司、家庭、学校、医院、机关、一栋大楼等
局域网中使用最广泛的网络技术叫:以太网(Ethernet)
在电脑、手机上常见的WLAN(Wireless LAN),叫:无线局域网
6.6.2 城域网(Metropolitan Area Network,MAN)
一般范围是数十公里到数百公里,可以覆盖一个城市
6.6.3 广域网(Wide Area Network,WAN)
一般范围是几百公里到几千公里,可以覆盖一个国家,通常都需要租用ISP的线路
6.7 常见的几种接口
FastEthernet
快速以太网接口(带宽可达100M)
GigabitEthernet
千兆以太网接口
Serial
串行接口
6.8 上网方式
6.8.1 电话线入户
这就是平时说的:ADSL电话拨号上网
非对称数字用户线路,提供上、下行不对称的传输带宽
猫(Modem),调制解调器,进行数字信号和模拟信号的转换
6.8.2 光纤入户
光猫(Optical Modem),光调制解调器,进行数字信号和光信号的转换
6.8.3 网线入户
6.9 家庭无线路由器的逻辑结构
6.10 公网IP、私网IP
IP地址分为:公网IP、私网IP
公网IP(Poblic)
Internet上的路由器中只有到达公网的路由表,没有到达私网的路由表
公网IP由因特网信息中心(Inter NIC)统一分配和管理
ISP需要向Inter NIC申请公网IP
私网IP(Private)
主要用于局域网,下面是保留的私网网段
6.11 NAT
私网IP访问Internet需要进行NAT转换为公网IP
NAT(Network Address Translation)
这一步可以由路由器来完成
特点:
可以节约公网IP资源
会隐藏内部真是IP
分类:
静态转换
手动配置NAT映射表
一对一转换
动态转换
定义外部地址池,动态随机转换
一对一转换
PAT(Port Address Translation)
多对一转换,最大程度节约公网IP资源
采用端口多路复用方式,通过端口号表示不同的数据流
是目前应用最广泛的NAT实现方式
还没有评论,来说两句吧...