网络和http协议理论

===
协议protocol:两台计算机互相通讯,需要定义规则,如何发现对方、谁先发起通讯、通讯语言规则、结束通讯标识。

TCP/IP协议族

协议族:不止一个协议,一堆协议的总称

  • TCP UDP:传输控制协议。
  • IP: 网络地址
  • HTTP:hyper text transfer protocol 超文本传输协议。 html
  • DNS: 域名解析
  • PPPoE:拨号上网、连接网络服务商。 例如联通宽带我世界拨号上网。
  • FTP: file transfer 文件传输。
  • ICMP SNMP : mail 邮件。
  • IEEE 802.3: ethernet 以太网 ,局域网。 802.11无线网卡wifi。
  • ARP:地址解析协议 。

网络通讯概览

客户端→ 协议转发 到各个节点路由 →服务器端
客户端:个人电脑
服务器端:别人的电脑,提供网站服务内容的平台。

http协议

形如 http://www.baidu.com
浏览器会自动默认省略http前缀。
网页是有html书写的。http协议非常流行。

三次握手

http协议为了准确送达和请求数据,不考虑规则细节,宏观上主要三个步骤:

  1. 发送syn synchronize同步标识。目的打招呼,看网络通不通,服务器是否能提供服务。
  2. 服务器端 发送 syn/ack acknowledgement 标识。告诉客户端我准备好了,你可以请求我。
  3. 客户端收到 syn/ack标识后,开始请求。

http报文结构

(后面详细讲解)

TCP和UDP

TCP协议

transfer control protocol 传输控制协议。
报文:按照一定结构封装的数据信息。例如http报文包含信息 目的地ip、请求方法、请求url地址等。
http协议底层基于TCP协议。宏观上看,http报文通过三次握手发送到服务端。底层上 http请求会先拆分为一段段的TCP报文。TCP报文包含请求地址、请求信息等。当服务收到tcp报文后会再组合成http报文。
场景:http协议、网页信息。

UDP协议

user datagram protocol 用户数据报协议。
客户端直接与服务端传输数据,不需要握手和校验。
所以UDP协议可能数据会丢失或传输错误,但优点传输快。
场景:视频、游戏数据。 所以少量数据报丢失不影响大致体验。

dns协议

域名domain:形如 www.baidu.com www.1owo.com www.xx.cn
ip地址:形如 192.168.221.73 47.222.57.222
比较:域名好像人的名字,优点好记。ip地址好像人的身份证号,优点易被计算机处理。

为什么发明域名:本来计算机网络就是靠ip地址来区分和访问。问题一,当你访问的网站多达上百了个时,数字组成的ip地址很难记。问题二,公司升级或更换电脑,迁移部署在服务器上的网站时,ip地址变化,不容易通知老客户网站,导致老客户访问不了网站。不好维护。
所以发明了域名。域名由英文和数字组成,好记。建立域名到ip地址的映射关系。 www.baidu.com → 47.222.15.55 。 如果百度换服务器,只用维护修改映射关系,普通仍然访问域名不需变化。

DNS:domain name system 域名系统。
DNS服务器:各个网站 域名转换ip的关系需要记录到一个服务器上服务大众。

流程

需求: 访问taobao.com

  1. 客户端访问当地运营商的DNS服务器,请求查询taobao.com的ip地址。
  2. DNS服务器返回taobao.com对应的ip地址。
  3. 根据ip地址请求taobao服务器。

hosts文件

打开一个网页 有信息有图片,请求几十次。如果每一次都查询dns服务器,将消耗资源,所以浏览器会缓存映射关系。
电脑本地也有一个dns关系缓存配置文件,hosts。windows系统 C://Windows/system32/drivers/etc/hosts 。用管理员权限记事本打开可以编辑。
hosts 里的定义优先级最高。如果浏览器访问一个网站,会先去hosts文件查询,如果查到ip直接访问,如果没查到再去查询dns服务器。

(了解)pycharm破解原理

(请优先支持正版)
百度“lanyu”itellij破解码

如果直接把激活码放入pycharm激活,会几秒提示失效。原理pycharm会每隔一段时间自动请求官方服务器验证激活真伪,假激活码不在官方服务器中,服务器就会通知客户端退出。
所以修改hosts文件,添加“0.0.0.0 account.jetbrains.com” ,这样pycharm后台验证请求时,不会请求真实的官方网站,而是会请求0.0.0.0特殊ip地址,请求都会被丢弃。这样假激活码就可以长时间使用。

(了解)墙的原理

(license:以下内容复制自网络)
DNS污染:运营商控制着DNS服务器,修改了一些网站的映射信息。例如 www.google.com → 67.22.22.22,把真实的ip地址置换为一个错误的ip地址编程 www.google.com → 0.0.0.0 ,
这时用户就无法访问。
其它措施如GFW government fire wall。

(了解)翻墙的第一种方法

修改hosts文件。因为墙的原理污染dns服务器,hosts文件优先级更高。所以可以网上找别人整理好的hosts文件,内容是常用国外网址和对应的真实ip地址。优点免费、易于修改。缺点:突破封锁能力一般。

寻找hosts文件:github 码云上搜索 “hosts”, 百度“laoD"
google hosts镜像

局域网 ARP

ARP协议:地址解析,发现局域网中的其它电脑地址并探测。
ip地址:网络分配的一个地址。就好像大街上的门牌号。
mac地址:物理地址,形如 00-0E-01-AA-12-12 ,每一块网卡有一个全球唯一的编号。电脑网络硬件唯一标识。

IP协议

ip地址 形如 45.222.222.21 ,由4个字节组成,每一段的范围0-255。

分类

A类:1.0.0.0到127.255.255.255 局域网少而主机大量的大型网络
B类:128.0.0.0到191.255.255.255 大型公司
C类:192.0.0.0到223.255.255.255 小公司、学校
D类:224.0.0.0到239.255.255.255 广播地址
E类:240.0.0.0到255.255.255.255 保留

公网地址

一个ipv4地址唯一确定网络上电脑位置,我们访问这个ip就可以访问到他的服务器。ipv4地址比较紧缺。

特殊地址

127.0.0.1 localhost ,本地ip地址,代表你自己正在操作的电脑。
0.0.0.0 ,空地址, 请求都会被丢弃。
169.254.. , 保留地址,dhcp服务无法分配。
192.168.. , 局域网地址。

(私有ip)局域网地址

10.0.0.0到10.255.255.255
172.16.0.0到172.31.255.255
192.168.0.0到192.168.255.255
对应二进制 11000000 10101000 00000001 0000000-11111111 ,前24位固定,后8位排列组合分配给网段内机器。
网关:一般为 192.168.1.1 , 一个局域网段的门口,一般给路由器使用。
支持的局域网ip: 192.168.1.2 – 192.168.1.254 ,两百多台机器。
下一间屋子就可以换下第3端数字继续 192.168.2.*
同一局域网段内: 192.168.221.50 → 192.168.221.73
跨局域网段(路由器连接并允许沟通) 192.168.221.50(321教室某同学) → 192.168.221.1(321教室的路由器网关)→ 192.168.222.1(320教室路由器)→ 192.168.222.30(320教室某同学)
同一局域网内的电脑超过了256台:解决方案,ip地址一共32位,前24位固定,后面8位共256种可能分配局域网电脑和网关。前面固定位数减少,后面组合的位数增加,所以出现10开头的局域网ip段支持更多电脑。
子网掩码:同一个局域ip地址,不知道固定的是多少位,自由组合多少位,产生歧义。定义局域网ip地址前多少位是固定的。
例如:192.168.221.73
二进制 11000000 10101000 11011101 01001001 前24位固定
子网掩码 11111111 11111111 11111111 00000000 固定用1表示
子网十进制 255.255.255.0 也就是说上面局域网ip 192.168.221部分是固定的。

dhcp协议

DHCP协议:因为配置静态ip比较麻烦和专业。所以出现了dhcp 动态dns分配协议。路由器如果开启dhcp服务,那么会为接入局域网的电脑设备自动分配局域网ip、网关、子网掩码。优势是比较方便。相关设置 dhcp的ip池 100-150最多支持50台, 设置ip过期时间。ip过期后会重新分配ip。
静态ip:如果有更精细的需求,应该手动配置静态ip。

ping tracert命令 百度“IP” 百度“站长工具”

ping www.baidu.com
服务器返回几次少量数据、传输用时ms,看网络通不通。(个别服务器安全原因禁止ping)
tracert www.baidu.com 会跟踪路由节点跳转的详细信息。
作业(选做):tracert可视化工具、提供节点ip对应的运营商信息。
百度"ip": 查看自己电脑的公网ipv4地址。

了解)ipv6

ipv4除去一些特殊网段,加上网络在全球非常流行,每个人的都有手机电脑等网络设备,ipv4地址紧缺不够用,ipv6地址正在推广中。
###(作业)配置静态ip
见示例图
###(课下)网络拓扑结构
百度“NAT 桥接 host-only”。vmwary虚拟机、路由器配置

整体流程

  1. 客户端浏览器想请求一个页面域名
  2. 请求DNS服务器获得网页对应ip地址
  3. 构造http请求报文
  4. http拆分成多个tcp报文
  5. tcp报文通过包含的ip信息 跳转路由
  6. 服务器收到tcp报文
  7. 服务器tcp报文组装还原成http报文信息
  8. 服务器根据http请求返回相应资源,返回响应内容。传输过程同上。

深入http协议

requests和response概览

请求request
属性:

  • 请求方法:GET、POST
  • host:目标地址
  • connection:keep alive或指定过期时间
  • cookie:比方,浏览器自带的小数据库。客户端每次请求都会带上cookie信息。
  • user-agent: 用户的浏览器信息

响应response
属性:

  • Content-Type: 内容类型,字符编码
  • Data:时间
  • Set-Cookie:服务端让浏览器存储的信息。
  • status-code: 响应码。判断成功或失败原因。
  • 返回的具体信息: html、js css png 。

URI URL

URI(Uniform Resource Identifier)统一资源标识符,互联网某一资源的位置的表示。
URL(Uniform Resource Locator) 统一资源定位符。
区别:URI概念宽泛, D://xxx.jpg https://www.baidu.com/logo.jpg,
URL是URI的子集https://www.baidu.com/logo.jpg 。

URL构成

https://zzk.cnblogs.com/dir/L11/8.html?w=blog%3Awuyun-blog dd
http://news.baidu.com/ns?word=python&tn=news&from=news&cl=2&rn=20&ct=1

  • 协议:http https
  • 认证(了解): http代理 用户名、密码。
  • 域名:www.baidu.com
  • 文件层级: dir/L11/8.html 请求访问资源的路径
  • 参数:随请求发送的参数。键值对形式?word=python&tn=news

GET POST

场景:
get: 取服务器资源,绝大部分http请求都是get请求。
post: 浏览器信息传递到服务器,期望服务器进行存储或计算。表单提交,有安全性要求的请求。服务器开销比get大。

区别(面试题):

  • 浏览器请求头request method中看出 。
  • get请求url中可以看到参数。post请求的参数在http请求体中,url中看不到,因此post请求更加安全。
  • get请求url长度有限制,不适合参数特别多和传输信息大。
  • get可以回退浏览器读缓存;post每次重新提交

option 客户端请求操作服务器。已经被封装了。
(不常用)put 请求服务器存储资源 ,delete 请求删除。这两种请求都可以由post代替。

工具:谷歌浏览器右键开发者工具/ network中看到。

状态码

服务器响应的status code状态,表示请求成功还是失败。

  • 200 成功
  • 304 重定向
  • 403 没有权限访问
  • 404 找不到资源
  • 500 内部错误,代码写错
  • 502 网关错误 ,路由问题 服务器压力大未及时响应

session会话 和 cookie小饼干

http是无状态的。比如 发送了一个含有用户名密码的post登录请求,服务器验证通过后返回需要权限才能浏览的页面。但时处于稳定和节省资源考虑,http发明时定义服务器不需要存储额外数据(访问者ip、用户名、密码)。当第二次访问时,服务器不知道你已经登录了。那么每次访问都需要输入用户名密码,显然不可能。
(面试题)session cookie区别?
session 会话:抽象概念,浏览器跟服务器通讯的过程,几分钟、几小时,持续沟通的过程。
cookie:浏览器自带的一个小数据库,用来存储信息,(存储 用户名、密码、会话id)。服务器response让客户端设置cookie。每次客户端请求服务器会把同一域名下的cookie中的值给带上。可以再chrome开发者工具application看到。

权限验证流程:

  1. 浏览器请求登录,携带用户名和密码信息。
  2. cookie中的数据值可见,密码存到cookie有安全问题。
  3. 解决办法,服务器验证用户名密码,权限通过,根据用户信息生成一个哈希加密的字符串session_id或token,形如’ie234tDI45DKF566JD’,服务器会临时保存这个字符串。
  4. 服务器返回具体网页内容和session_id,告诉浏览器把session_id这个字符串存到cookies当中。
  5. 浏览器每次访问时都会带上cookie。服务器验证cookie中的session_id比对,如果存在说明用户已经登录。这样就可以保持会话持续。

https

https:Hyper Text Transfer Protocol over Secure Socket Layer 基于安全套接字层的http协议。加密方式ssl tsl。防止http请求过程中被中间人抓取、攻击。比http更加安全。
(课外)CA证书 CA机构 对称加密 非对称加密 中间人攻击。

代理服务器

我的电脑 → 中介电脑 → 目的网页。
场景:科学上网。爬虫。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值