===
协议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机构 对称加密 非对称加密 中间人攻击。

代理服务器

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

网络和http协议理论相关推荐

  1. DDos攻击的一些领域知识——(流量模型针对稳定业务比较有效)不稳定业务采用流量成本的检测算法,攻击发生的时候网络中各个协议的占比发生了明显的变化...

    在过去,很多防火墙对于DDoS攻击的检测一般是基于一个预先设定的流量阈值,超过一定的阈值,则会产生告警事件,做的细一些的可能会针对不同的流量特征设置不同的告警曲线,这样当某种攻击突然出现的时候,比如S ...

  2. 认知无线电网络架构与协议体系

    认知无线电网络架构与协议体系 本文转载自中国联通通信技术 摘要:认知无线电网络具有动态.灵活.智能地使用频谱资源,提高频谱利用率的特点,其网络结构和协议体系的设计是实现上述网络功能的关键.现有基于认知 ...

  3. 不为人知的网络编程(九):理论联系实际,全方位深入理解DNS

    本文原作者:selfboot,博客地址:selfboot.cn,Github地址:github.com/selfboot,感谢原作者的技术分享. 1.引言 对于 DNS(Domain Name Sys ...

  4. 网络安全技术期末复习——理论部分

    复习.考核 网络安全基本理论知识点.实际设备 网络安全实验 出勤.作业.讨论.课堂练习 11次课的作业完成情况 偏实践和操作:60% 综合系统复习 理论考核:时间占三分之一(150分钟:理论就是50 ...

  5. 手撕 CNN 经典网络之 VGGNet(理论篇)

    2014年,牛津大学计算机视觉组(Visual Geometry Group)和Google DeepMind公司一起研发了新的卷积神经网络,并命名为VGGNet.VGGNet是比AlexNet更深的 ...

  6. 手撕 CNN 经典网络之 AlexNet(理论篇)

    大家好,我是红色石头! 第一个典型的CNN是LeNet5网络,而第一个大放异彩的CNN却是AlexNet.2012年在全球知名的图像识别竞赛 ILSVRC 中,AlexNet 横空出世,直接将错误率降 ...

  7. 02.iOS开发网络篇—HTTP协议

    iOS开发网络篇-HTTP协议 说明:apache tomcat服务器必须占用8080端口 一.URL 1.基本介绍 URL的全称是Uniform Resource Locator(统一资源定位符) ...

  8. 计算机网络的体系结构与协议基本概念,计算机网络技术基础-第3章网络体系结构与协议.ppt...

    <计算机网络技术基础-第3章网络体系结构与协议.ppt>由会员分享,可在线阅读,更多相关<计算机网络技术基础-第3章网络体系结构与协议.ppt(19页珍藏版)>请在装配图网上搜 ...

  9. (转)C#网络编程(订立协议和发送文件) - Part.4

    源码下载:http://www.tracefact.net/SourceCode/Network-Part4.rar C#网络编程(订立协议和发送文件) - Part.4 文件传输 前面两篇文章所使用 ...

最新文章

  1. Qt5.3.1 MinGW482 release静态版编译结果、过程及QtCreator配置(转)
  2. python官网怎么下载-python下载官网
  3. BootStrap2学习日记8---表单
  4. base 镜像 - 每天5分钟玩转容器技术(10)
  5. 计算机组成要素三:时序逻辑:构建计算机随机存取单元RAM及计数器PC
  6. nginx 的请求处理、请求的处理流程
  7. html固定表的属性是什么,css如何固定表头
  8. linux打开文件异常
  9. 文件实时上传至云服务器的方法,文件实时上传至云服务器的方法
  10. tp5 使用PHPAnalysis提取关键字中文分词
  11. tomcat apr Dockfile
  12. WCF开发实战系列四:使用Windows服务发布WCF服务
  13. Trie(字典)树详解
  14. 整理的敏感词解决思路
  15. python熄灯问题
  16. 小牛电动为何沉迷于打造“社区文化”?
  17. python进行电子取证
  18. python tkinter 窗口颜色--数据和名称
  19. 最详细的Android Bitmap回收机制(从2.3到7.0,8.0)
  20. 网络基础 IP协议 子网划分 子网汇总 超网 无类间路由超详细介绍

热门文章

  1. bootrom的类型
  2. IT售前如何写解决方案分析
  3. android中倒计时计算器,死亡计算器生命倒计时下载-死亡计算器生命倒计时软件下载 v8.8.0_5577安卓网...
  4. 大数据项目之电商数仓(业务数据仓库)
  5. 重磅突发!支付宝下架互联网存款产品,蚂蚁集团回应
  6. 程序员的算法趣题:Q09 落单的男女(Java版)
  7. Android面试基础之BroadcastReceiver详解(斗帝养成系列四)
  8. 送给大一新生的一些话
  9. 【JavaEE进阶系列 | 从小白到工程师】基本类型包装类的使用,装箱以及拆箱与parseInt方法
  10. 苹果开发者新账号上新app审核被拒绝:Other-Other被拒绝,心路历程记录!