网络连接过程–http
1.生成消息
省略文件名
-
一般情况下,url最后有‘/’表示目录,没有后缀的时候,先找文件,后找目录
-
在结尾为目录的情况下,一般服务器会有默认文件
-
生成http请求文件
2.利用dns查询ip
3.委托协议栈发送消息
-
协议栈是通过套接字中记录的控制信息来完成工作的
-
创建套接字时,首先分配一个套接字所需的内存空间内,然后向其中写入初始状态
-
删除套接字时,最后会存在一段时间,防止四次断开操作错误,重发,影响该套接字,下一次分配
-
以太网mac:集线器 vs ip:路由器
ip模块作用 <1>.mac头部 <2>.IP头部
网卡: <1>.网卡中的rom保存着全世界唯一的mac地址,生产时就存在 <2>.网卡中保存的mac地址会有网卡驱动程序读取并分配 <3>.MAC模块生成通用信号,PHY(MAU)模块转换成可在网线中传输的格式
网卡
-
缓存区:储存临时保存要发包的空间
-
mac:控制碰撞检测,重发等以太网收发操作
-
PHY(MAU):发送和接受信号的电路
-
RJ45
4.信号在网线,集线器,交换机中传输
集线器
-
中继电路和phy构成
-
集线器将信号发给所有连接到它上面的线路
-
双铜绞线是为了减少噪声
交换机
-
交换电路和类网卡结构组成
-
交换机的mac模块没有mac地址
-
转发依靠mac表,arp
路由器
- 由端口模块和包转发模块组成
- 端口模块:ASDL,FTTH,通信,无线网,以太网等
- 包转发模块:依靠路由表*
- 每个端口都具有独立的mac地址和IP地址
路由表
- 只通过子网掩码比较网络号
- 通过arp维护mac地址
- 默认路由:子网掩码为0.0.0.0
- 判断下一转发目标的方法
- 如果路由表的网关为ip地址,则该地址就是下一转发目标
- 如果为空,则ip头部的接受方ip就是下一转发目标
包有效期
- TTL:每次经过一个路由器-1,为0时丢弃,一般开始时为64或128
分片
-
将太大的包进行分片
-
不能分片的由两种
<1>.发送程序设置了的
<2>.已经分过一次的
接入网
- 互联网与家庭,公司网络的通信电路
ASDL
- 计算机—>互联网接入网路由器–>ASDL Modem–>分离器(电话机)–>配线盘–>分离器(电话交换机(电话网))–>DSLAM–>BAS
- 互联网接入路由器:会在网络包前面加入,mac头部,PPPoE头部,PPP头部
- ADSL Modem会把信息拆分成信元,然后给分离器
- 分离器:
- 分离高频信号
- 防止电话联通和断开时产生的对ADSL…
- DSLAM具有ATM接口,和后方路由器收发数据时用的时信元
- BAS负责将ATM信元还原成网络包
光纤
- 计算机–>互联网接入网路由器(以太网)—>光纤收发器–>多路光纤收发器–>BAS
ASDL,FTTH
- 接入网时,需要用户名和密码,通过BAS接入网
- BAS通过PPPoE实现
- PPPoE时由传统电话拨号上网使用的PPP协议发展而来的·
PPPoE是将PPP消息装入以太网包进行传输的方式
BAS进入互联网的方式
- 基于tcp连接
- 基于封装
接入网的整体工作过程
- 1.接入路由和BAS需要mac地址
- 2.介入路由发送用户认证
- 3.BAS下发TCP/IP信息
- 4.通信
BAS收到用户路由器发送的网络包之后,会去掉MAC头部和PPPoE头部,然后利用隧道发送
下发的TCP/IP信息是给路由器,接近BAS的端口的,所以计算机没有共有地址,但有些应用程序,必须要共有地址,这时可以,不用路由器,让计算机直接接受BAS的PPPoE消息
PPPoE
- 不加mac头部和PPPoE头部,直接将包装装入信元中
DHCP
- 不使用PPP,而是将以太网包直接转换成ADSL信号直接发送给DSLAM
pop和NOC
pop
- 网络包通过接入网之后,到达运营商POP的路由器
NOC
- 是运营商的核心
互联网内部使用BGP方式通信
IX
- 管理运营商
服务器
- 数据中心和运营商核心NOC直接相连
防火墙
- 采用包过滤的方式
- 通过端口号限定应用程序(外—>内)
- 通过控制位判断(内–>外)(ack/syn阻止直连)
平衡载荷
- 使用负载均衡器分配访问
- 使用缓存服务器分配访问
- 内容分发服务
缓存服务器
- 正向代理:部署在客户端一侧,(还可以当防火墙)
- 反向代理:正向代理改良版
- 透明代理:查看请求消息包头部位
内容分发服务
服务器接受
使用描述符代替套接字
- (1)等待连接的套接字中没有客户端IP地址和端口号
- (2)使用苗圃舒服这一种信息比较简单
网卡mac模块
- (1)将接受的网络包转换成数字信息
- (2)校验FCS并存入缓存区
网卡驱动
- 根据mac头部判断协议类型,并交给相应的协议栈
协议栈
- (1)判断信息是不是发给自己的
- (2)判断网络包是否分片
- (3)将包转交给TCP或者UDP模块
TCP
- (1)确定TCP的控制位SYN
- (2)检查接收方端口号
- (3)为相应等待的套接字创建一个新的副本
- (4)记录发送发IP地址和端口号等