-
Notifications
You must be signed in to change notification settings - Fork 20
Network
目录 start
目录 end|2019-05-09 20:31|
- webapi的设计与开发
- 网络是怎样连接的
- 计算机网络 谢希仁
码农翻身:小白科普:从输入网址到最后浏览器呈现页面内容,中间发生了什么? | 码农翻身:我是一个路由器 | 码农翻身:我是一个网卡
开放系统互连基本参考模型 OSI/RM Open Systems Interconnection Reference Model, 简称 OSI
OSI制定的OSI七层参考模型的过于庞大、复杂。与此对照,由技术人员自己开发的TCP/IP协议栈(四层)获得了更为广泛的应用。
谢希仁所著的 计算机网络 书中 为了教学, 融合成了 五层模型
: 网络接口层 => 物理层+数据链路层
事实上, 现在的应用不是严格按照OSI分层的, 应用层可以使用 传输层(TCP UDP), 也可以直接使用网络层(IP),甚至直接使用网络接口层
IPv4 & IPv6 参考博客: 浏览器访问IPv6地址
将IP和MAC对应起来的协议
TCP/IP 运输层的两个主要协议都是因特网的正式标准
用户数据报协议 UDP User Datagram Protocol
控制传输协议 TCP Transmission Control Protocol
按照 OSI 的术语, 两个对等运输实体在通信时传送的数据单位叫做 运输协议数据单元 TPDU Transport Protocol Data Unit. 但在 TCP/IP 体系中, 则根据使用的所使用的协议是 TCP 或 UDP, 分别称之为 TCP报文段 segment, UDP用户数据报
TCP 帧的头部信息 20字节 也就是160位
16位源端口号,16位目的端口号
32位序列号
32位确认序列号
4位首部长度, 保留6位, URG, ACK, PSH, PST, SYN, FIN, 16位窗口大小
16位校验和, 16位紧急指针
选项
数据...
UDP 帧的头部信息 8 字节
16位源端口号,16位目的端口号
16位用户数据库包长度, 16位检查和
数据...
- TCP与UDP基本区别
- 基于连接与无连接
- TCP要求系统资源较多,UDP较少;
- UDP程序结构较简单
- 流模式(TCP)与数据报模式(UDP);
- TCP保证数据正确性,UDP可能丢包
- TCP保证数据顺序,UDP不保证
- UDP应用场景:
- 面向数据报方式
- 网络数据大多为短消息
- 拥有大量Client
- 对数据安全性无特殊要求
- 网络负担非常重,但对响应速度要求高
Websocket协议 本质就是TCP的简单封装, 不像HTTP那样应答模式, 而是一次连接后就保持全双工模式
- 单一的TCP连接, 采用全双工模式通信
- 对代理, 防火墙和路由器透明
- 无头部信息, Cookie, 身份验证
- 无安全开销
- 通过 ping/pong 帧 保持链路激活
- 服务器可以主动传递消息给客户端, 不需要客户端轮询
Time to first byte
网络请求被发起到从服务器接收到第一个字节这段时间,它包含了 TCP连接时间,发送HTTP请求时间和获得响应消息第一个字节的时间。
- 统一资源定位符 特别注意URL的组成和编解码 url中的特殊字符问题
- 不能在URL的关键位置出现%号,作为参数的值是允许的。
域名和资源转换的服务
- 解析域名的顺序一般是, 先在本机找,找不到去找上连DNS服务器, 然后根域DNS服务器
- 这时候就有了几种方式,递归, 迭代, 递归加迭代(为了减轻全球13台根的压力)
- 假设是访问这个域名 scs.bupt.edu.cn (bupt.三级 机构域名, edu 二级行业域名, cn 一级国家域名)
- 递归: 本机->上连->根->cn->edu.cn->bupt.deu.cn 然后得到解析结果后,递归返回到上连,上连DNS服务器会进行缓存该结果,再返回本机
- 迭代:本机->上连,上连->根,根->cn cn->edu.cn, edu.cn->bupt.deu.cn 最终返回了结果 到上连
- 递归加迭代, 区别在于,先迭代根, 得到下级一级服务器节点后,下级就是递归的入口和出口
- 授权和非授权, 还是上面那个URL, 其他的都不是授权的, 只有离URL最近的DNS才是授权的 即
bupt.edu.cn
Socket是应用层与TCP/IP协议族通信的中间软件抽象层,是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议
在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。而我们所说的socket编程指的是利用soket接口来实现自己的业务和协议。
Socke接口属于软件抽象层,而sokcket编程却是标准的应用层开发
客户端使用代理隐藏自身, 去访问明确的服务端
- 应用: 科学上网, VPN,
- 安全: 正向代理允许客户端通过它访问任意网站并且隐蔽客户端自身,因此你必须采取安全措施来确保仅为经过授权的客户端提供服务
服务端使用代理隐藏自身, 客户端明确访问的实际上是代理
- 应用: 保护和隐藏原始资源服务器, 负载均衡, 加密和SSL加速, 缓存静态内容, 安全(DDos的防护)
- 安全: 对外是透明的,访问者并不知道自己访问的是代理。对访问者而言,他以为访问的就是原始服务器
客户端根本不需要知道有代理服务器的存在,它改变你的request fields(报文),并会传送真实IP,多用于路由器的NAT转发中
WebDAV (Web-based Distributed Authoring and Versioning) 一种基于 HTTP 1.1协议的通信协议.它扩展了HTTP 1.1,在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新的方法,使应用程序可直接对Web Server直接读写,并支持写文件锁定(Locking)及解锁(Unlock),还可以支持文件的版本控制。
字节码技术 WebAssembly 实践:如何写代码 MDN
问题
-
Error during loading:[string "/usr/wireshark/init.lua"]:44:
- 这是由于Wireshark为了防止以root用户身份执行Lua脚本,避免对系统造成损坏,而显示警告弹窗。通常,用户只需要确认
- 如果不想每次都看到 修改
/usr/wireshark/init.lua
第一行(非注释,有效代码) 改成disable_lua = true
1g 2g 2.5g 2.75g 3g 4g 5g
参考: 1G, 2G, 3G, 4G, & 5G Explained [参考: Difference Between 1G, 2G, 3G vs. 4G and 5G](Difference Between 1G, 2G, 3G vs. 4G and 5G)
-
【 Algorithm 】
-
【 Blog 】
-
【 C 】
-
【 Database 】
-
【 Distributed 】
-
【 FrontEnd 】
- 【 FrontEnd/Frame 】
- 【 FrontEnd/Node 】
- Font
- Hexo
- JavaScript
- LearnPS
- ResponseCode
- SVG
- ViewSolution
- extjs学习笔记
-
【 Functional 】
-
【 Go 】
-
【 Groovy 】
-
【 Java 】
- 【 Java/AdvancedLearning 】
- 【 JavaBasic 】
- 【 JavaCache 】
- 【 JavaCollection 】
- 【 JavaConcurrency 】
- 【 JavaMap 】
- Annotation
- ClassFile
- Collection
- Concurrency
- Deploy
- Exception
- ExtendsAndInterface
- Generics
- IO
- JDBC
- JDKAndJRE
- JMX
- JVM
- Java11
- Java7
- Java8
- JavaNetwork
- JavaReleaseVersion
- JavaWeb
- JvmPerformance
- MQ
- MultipleLanguage
- Proxy
- Reflection
- Serialize
- SyntaxAndType
- Thread
- WebPerformance
- 【 Java/Android 】
- 【 Java/Ecosystem 】
- 【 Java/MSA 】
- 【 Java/Spring 】
- 【 Java/TemplateEngine 】
- 【 Java/Test 】
- 【 Java/Tool 】
- 【 Java/thread 】
- AlibabaJavaStandard
- DesignPattern
- HashMap解析
- Java-NIO
- Java虚拟机
- Log
- MIS
- Quartz
- RESTful
- WebSocket学习笔记
- ZooKeeper学习笔记
- android学习笔记
- 【 Java/AdvancedLearning 】
-
【 Kotlin 】
-
【 Linux 】
- 【 Linux/Alpine 】
- 【 Linux/Arch 】
- 【 Linux/Base 】
- 【 Linux/Centos 】
- 【 Linux/Container 】
- 【 Linux/Debian 】
- 【 Linux/Tool 】
- JavaDevInit
- Linux系统学习
-
【 MyBlog 】
-
【 Python 】
- 【 Python/Tool 】
- Python
- PythonConcurrent
- PythonGUI
- PythonGame
- PythonNet
- PythonOffices
- PythonWeb
- Python基础
- Python核心学习
-
【 Reactive 】
-
【 Rust 】
-
【 Scala 】
-
【 Script 】
-
【 Skills 】
- 【 Skills/Application 】
- 【 Skills/CS 】
- 【 Skills/Cache 】
- 【 Skills/Councurrency 】
- 【 Skills/DevOps 】
- 【 Skills/Document 】
- 【 Skills/Ecology 】
- 【 Skills/Network 】
- 【 Skills/Search 】
- 【 Skills/SoftwareEngineering 】
- 【 Skills/Spider 】
- 【 Skills/Test 】
- 【 Skills/Vcs 】
- 【 Skills/Work 】
- AppManual
- CelebrityQuotes
- Miscellaneous
- Platform
- Problem
- Protobuf
- RegularExpression
- SoftwareDesignEngineer
- Website
-
【 Windows 】