网络基础

网络协议篇

1.C/S B/S架构

? C: client端

? B: browse 浏览器

? S: server端

C/S架构:

? 基于客户端与服务端之间的通信

? QQ, 游戏, 皮皮虾, 快手, 抖音

优点:

? 个性化设置, 响应速度快

缺点:

? 开发成本, 维护成本高, 占用空间, 用户固定

B/S架构:

? 基于浏览器与服务端之间的通信

? 谷歌浏览器, 360浏览器, 火狐浏览器等等

? 常用谷歌, 或 火狐,广告少, 源码易解读

优点:

? 开发维护成本低, 占用空间相对低, 用户不固定

缺点:

? 功能单一, 没有个性化设置, 相应速度相对慢一些

2.网络通信原理

80年代, 固定电话联系(还没有推广普通话)

? 1. 两台电话之间一堆物理连接介质连接

? 2. 拨号, 锁定对方电话的位置.

? 由于当时没有统一普通话, 所以你如果和河南, 山西, 广 西, 福建等朋友进行友好的沟通交流, 你必须学当地的方言.

推广普通话, 统一交流方式:

? 1. 两台电话之间一堆物理连接介质连接.

? 2. 拨号, 锁定对方电话的位置

? 3. 统一交流方式

全球范围内交流:

? 1. 两台电话之间一堆物理连接介质连接.

? 2. 拨号, 锁定对方电话的位置.

? 3. 统一交流方式.(英语)

互联网如何通信:

? 现在想和一个美国人联系, 如何利用计算机联系:

? 1. 两台计算机要有一堆物理连接介质连接.

? 2. 找到对方计算机软件位置

? 3. 遵循一揽子互联网通信协议

3. osi 七层协议

网络基础

 

 

 

 

网络基础

 

简单串联五层协议以及作用

1.物理层

? 物理层指的就是网线, 光纤, 双绞线等等物理连接介质.物理层发送的是比特流(01010101010),所以有一个问题,数据应该有规律的分组, 分组是数据链路层做的事情

2.数据链路层

? 数据链路层对比特流进行分组. 最开始从事互联网企业的就是美国的几家公司, 各家有各家自定的分组标准. 后来统一了标准: 对数据分组的标准.

以太网协议

? 对比特流进行合理的分组. 一组数据01010101 叫做一帧, 数据报. 例如:

? head | data(晚上约么)

? head 是固定的长度: 18个字节

? 源地址: 6个字节

? 目标地址: 6个字节

? 数据类型: 6个字节

? data: 最少是46个字节, 最大1500字节.

? 一帧数据: 最少64个字节, 最大1518个字节

? 一帧数据 | 一帧数据 | 一帧数据........

mac地址

? 每个电脑上都有一个网卡, 网卡上都记录着一个独一无二的地址. mac地址就是你的计算机上网卡标注的地址.

? 12位16进制数组成: 前六位是厂商编号, 后六位是流水线号.

? 源mac地址 目标mac地址 数据类型 | data

? "FF - FF - FF - FF - FF - FF"

? ‘1C - 1B - 0D - A4 - E6 - 44‘

计算机的通信方式:

? 同一个局域网内, 通过广播的形式通信.

? 消息一经广播发出, 局域网所有的计算机都能接收到消息, 分析消息, 是否是找我的, 不是就丢弃

? 计算机只能在局域网内进行广播: 范围大了 广播风暴, 效率极低

? 不同局域网如何通信

? 软件与软件的通信, 而不是计算机之间的通信

3.网络层

IP协议:

? 确定局域网(子网)的位置

? 找到具体软件的位置, 上一层的事情

4.传输层

端口协议

? 确定软件在计算机的位置

5.应用层

? 自己定义的协议

? 广播(局域网内) + mac地址(计算机位置) + ip(局域网的位置) + 端口(软件在计算机的位置).

? 有了以上四个参数: 你就可以确定世界上任何一个计算机的软件的位置

网络基础

 

 

 

4.对五层协议详细的补充说明

 

数据链路层补充:

? 同一个局域网通过广播的形式发送数据

? 交换机的mac地址学习功能:

? 一个交换机的5个接口: 5个计算机

? 1: FF-FF-FF-FF-FF-FF?

2: FF-FF-FF-FF-FF-FF?

3: FF-FF-FF-FF-FF-FF?

4: FF-FF-FF-FF-FF-FF?

5: FF-FF-FF-FF-FF-FF

? 接口1: 源mac 1C - 1B - 0D - A4 - E6 - 44 目标1C - 1C - 0D - A4 - E5 - 44 |数据 以广播的形式发出2,3,4,5口都会接收到消息, 5口是最终的目标地址, 交换机就会将5口与mac地址对应上

?1: 1C-1B-0D-A4-E6-44?

2: FF-FF-FF-FF-FF-FF?

3: FF-FF-FF-FF-FF-FF?

4: FF-FF-FF-FF-FF-FF?

5: 1C-1C-0D-A4-E5-44

? 我们的前提是什么? 你必须知道对方的mac地址你才可以以广播的形式发消息.实际上,网络通信中,你只要知道对方的IP与自己的IP即可.

网络层:

IP协议:

? ip地址:

? 四段分十进制 192.168.0.12? 取值范围 0255.0255.0255.0255? 子网掩码: C类子网掩码: 255.255.255.0

? ip地址 + 子网掩码 按位与运算 计算出是否在统一局域网(子网,网段).?

计算172.16.10.1 与 172.16.10.128?

172.16.10.1:? 10101100.00010000.00001010.00000001? 255.255.255.0:? 11111111.11111111.11111111.00000000? 从属于的局域网: 172.16.10.0

? 172.16.10.128:? 10101100.00010000.00001010.10000000? 255.255.255.0:? 11111111.11111111.11111111.00000000? 从属于的局域网: 172.16.10.0?

172.16.10.1 ~172.16.10.255?

C类子网掩码 一个网段最多可以承载多个IP地址??

172.16.10.0 被占用.?

172.16.10.255 广播地址 被占用.?

172.16.10.1 被占用.? 253台计算机.?

如果你要想给另一个计算机发数据, 你一定要知道对方的ip地址.

ARP协议:

 

源mac

目标mac

源ip

目标ip

数据部分

发送端主机

发送端mac

FF:FF:FF:FF:FF:FF

192.16.10.1

192.16.10.156

 

源mac   08-D2-3E-23-B6-62

目标mac   FF:FF:FF:FF:FF:FF:

源ip     192.16.10.1

目标ip  192.16.10.156

 

判断在不在同一网段,

第一次发消息:发送到交换机 路由器   广播发出

目标计算机收到消息:回消息

源mac   1C-1B-0D-A4-E6-44

目标mac   08-D2-3E-23-B6-62

源ip     192.16.10.1

目标ip  192.16.10.156

网络基础

 

 

 网络基础

 

 

 

5.TCP UDP

? TCP(Transmission Control Protocol)可靠的、面向连接的协议(eg:打电话)、流式协议, 传输效率低全双工通信(发送缓存&接收缓存)、面向字节流。使用TCP的应用:Web浏览器;文件传输程序。

 

? UDP(User Datagram Protocol)不可靠的、无连接的服务,传输效率高(发送前时延小),一对一、一对多、多对一、多对多、面向报文(数据包),尽最大努力服务,无拥塞控制。使用UDP的应用:域名系统(DNS);视频流;IP语音(VoIP)。

TCP协议的三次握手和四次挥手

 

tcp三次握手
一、TCP报文格式
 
网络基础
 网络基础

 

 

    在了解三次握手和四次挥手之前,先知道TCP报文内部包含了哪些东西。
  1. TCP报头中的源端口号和目的端口号同IP数据报中的源IP与目的IP唯一确定一条TCP连接。TCP在发送数据前必须在彼此间建立连接,这里连接意思是:双方需要内保存对方信息(例如:IP,Port…)
  2. 报文主要段的意思
    序号:表示发送的数据字节流,确保TCP传输有序,对每个字节编号
    确认序号:发送方期待接收的下一序列号,接收成功后的数据字节序列号加 1。只有ACK=1时才有效。
    ACK:确认序号的标志,ACK=1表示确认号有效,ACK=0表示报文不含确认序号信息
    SYN:连接请求序号标志,用于建立连接,SYN=1表示请求连接
    FIN:结束标志,用于释放连接,为1表示关闭本方数据流
二、“三次握手”
2.1 三次握手过程
建立TCP连接时,需要客户端和服务器共发送3个包。
  • 第一次:客户端发送初始序号x和syn=1请求标志
  • 第二次:服务器发送请求标志syn,发送确认标志ACK,发送自己的序号seq=y,发送客户端的确认序号ack=x+1
  • 第三次:客户端发送ACK确认号,发送自己的序号seq=x+1,发送对方的确认号ack=y+1
 
网络基础
 网络基础

 

 

 2.2 三次握手过程分析:
  • 第一次:客户端发送请求到服务器,服务器知道客户端发送,自己接收正常。SYN=1,seq=x
  • 第二次:服务器发给客户端,客户端知道自己发送、接收正常,服务器接收、发送正常。ACK=1,ack=x+1,SYN=1,seq=y
  • 第三次:客户端发给服务器:服务器知道客户端发送,接收正常,自己接收,发送也正常.seq=x+1,ACK=1,ack=y+1
上面分析过程可以看出,握手两次达不到让双方都得出自己、对方的接收、发送能力都正常的结论的。
 
三、 “四次挥手”
 3.1 四次挥手过程
  • 第一次挥手:客户端发出释放FIN=1,自己序列号seq=u,进入FIN-WAIT-1状态
  • 第二次挥手:服务器收到客户端的后,发出ACK=1确认标志和客户端的确认号ack=u+1,自己的序列号seq=v,进入CLOSE-WAIT状态
  • 第三次挥手:客户端收到服务器确认结果后,进入FIN-WAIT-2状态。此时服务器发送释放FIN=1信号,确认标志ACK=1,确认序号ack=u+1,自己序号seq=w,服务器进入LAST-ACK(最后确认态)
  • 第四次挥手:客户端收到回复后,发送确认ACK=1,ack=w+1,自己的seq=u+1,客户端进入TIME-WAIT(时间等待)。客户端经过2个最长报文段寿命后,客户端CLOSE;服务器收到确认后,立刻进入CLOSE状态。

网络基础

 

 

网络基础
3.2四次挥手过程分析
  • 第一次:客户端请求断开FIN,seq=u
  • 第二次:服务器确认客户端的断开请求ACK,ack=u+1,seq=v
  • 第三次:服务器请求断开FIN,seq=w,ACK,ack=u+1
  • 第四次:客户端确认服务器的断开ACK,ack=w+1,seq=u+1
四、其他问题
 4.1为什么三次握手和四次挥手?
  • 三次握手时,服务器同时把ACK和SYN放在一起发送到了客户端那里
  • 四次挥手时,当收到对方的 FIN 报文时,仅仅表示对方不再发送数据了但是还能接收数据,己方是否现在关闭发送数据通道,需要上层应用来决定,因此,己方 ACK 和 FIN 一般都会分开发送。
4.2为什么客户端最后还要等待2MSL?
  • 客户端需要保证最后一次发送的ACK报文到服务器,如果服务器未收到,可以请求客户端重发,这样客户端还有时间再发,重启2MSL计时。
 网络基础

 

 

 

路由:

选取最右路线

别的计算机只能访问到外网

外网(公网)IP

内网(局域网)IP,DHCP协议:路由器自动分发的ip地址,网关等等

DNS域名解析服务器:

NAT:ip置换技术    www.baudi.com  置换  123.125.26.56:8080

 

 

  • HTTP

1 基于请求响应
2基于TCP IP 作用于应用层之上的协议
3无状态 不保存用户信息 解决:cookie.session.token
4无/短链接 请求一次 响应一次直接断开 解决:长链接websocket
 网络基础

 

请求数据格式:

请求首行 (标识HTTP协议版本 请求方式)
请求头 (一些k,v键值对)
/r/n
请求体 (post才有,放敏感数据 账号密码)
 
 
请求方式:
1get:朝服务端要数据 (输入网址返回数据)
2post 朝服务端提交数据
 

响应数据格式

响应首行 (标识HTTP协议版本 响应状态码)
响应头 (一些k,v键值对)
/r/n
响应体 (返回浏览器展示给用户的)
响应状态码:
用一串数字表示一些状态和描述性信息 :404请求数据不存在
五大类
1xx:服务端已经成功收到你的数据正在处理,你可以继续提交额外的数据
2xx:服务端已经成功响应的你想要的数据(200 ok)
3xx:重定向 跳转到其他页面
4xx:请求错误(404)资源不存在(403)请求不合法或者没有访问的条件
5xx:服务器内部错误(500 )
 
url:同一资源定位符(网址)

 

http请求方法

 网络基础

 

 get和post请求方式的区别:

1.get请求参数是直接显示在地址栏的,post不在地址栏

2.get方式不安全,post安全

3.get请求参数是有长度限制的,post没有限制

网络基础

上一篇:SEO之关键词选择


下一篇:SignalR系列续集[系列8:SignalR的性能监测与服务器的负载测试]