网络通讯原理简介以及演示通讯过程

简介: 网络通讯原理简介以及演示通讯过程

OSI网络七层参考模型


image.png

这是7层网络参考模型 非实现层面的


TCP/IP协议实现


image.png


TCP/IP协议实现了七层网络模型 
将展示层和会话层合并到了应用层
微信、QQ或tomcat进程都属于应用层 该层的常用协议http、https、ssh、ftp
程序员只需要关注这层就可以了
其他层次 比如传输控制层(TCP、UDP)、网络层(IP、路由协议)、链路层(ARP协议)是内核实现的
用户态通过系统调用切换到内核态


演示下网络交互过程


通过ssh登录linux操作系统执行命令exec
在没有任何浏览器或工具的情况下访问百度 取回百度主页
这一去一回过程牵扯到用户层、内核、tcp通信、http协议

exec 8<> /dev/tcp/www.baidu.com/80

/dev/tcp/www.baidu.com/80 这是一个路径 
前缀是/dev/tcp
linux操作系统一切皆文件 网络连接可以是一个文件 打印机可以是一个文件
以文件目录的方式来表示
内核最终会把它转换成socket

image.png


执行之后 在当前域中就有一个8了 
这个8的输入输出指向和百度的这个socket连接
此时假设已经有了一个三次握手的socket连接了
那么要取回百度服务器的主页的时候 
要给它发送什么才能取回来 牵涉到哪个协议
需要给百度发送一个http协议

GET / HTTP/1.0\n

/表示请求的资源
把这个字符串发送给百度 百度就知道了 你要请求主页了
协议就是规定了你发送的数据如何表示
HTTP协议就是数据如何表示HTTP协议

echo -e "GET / HTTP/1.0\n"


image.png


echo是打印
通过-e来识别换行符\n
http协议是拿换行符做切割得到一行行字符串
每行字符串会用空格做切割
遇到2个换行符之后才是post body信息
8<> 表示将输入输出的2个方向都给到了百度

echo -e "GET / HTTP/1.0\n" 1>& 8

将输出重定向到了8
1>& 标准输出
8的输出又指向了sokcet 给百度了
百度如果接受到了 那么就会给返回
那么就需要读取该返回内容
socket网络通讯是双向的 有输出就有输入
给百度发送了http请求协议头 文本

cat 0<& 8

读取socket 8中流回的内容


image.png

image.png

读到了百度给返回的
HTTP/1.0 200 OK是响应头
接着是响应头的键值对
接着2个换行符
接着是响应体 内容就是百度的主页页面
取回东西之后就会断开连接

cd /proc/$$/fd

image.png

0是程序指向终端的标准输入 system.in
1是标准输入system.out
2是system.error
这3个是任何程序都有的
socket 也可以给出一个数字也可以是一个递增的数字 来代表这个socket
fd文件描述符可以理解成一个变量 在java中 open一个文件得到一个file变量

lsof -p $$

image.png

本机随机端口号指向了百度的一个地址 80端口号 http协议
9 就是代表了对百度的一个socket
socket怎么建立的?
实际上是由内核完成的


总结


微信图片_20220501114719.png


连接不需要人管
连上之后 客户端和服务端之间的通讯 你说啥?牵扯到http协议 
连的是web server服务器所以用的http协议
连的是ftp服务器连的是ftp协议
应用程序application里面会有协议封装的过程
这个协议封装不是内核做的
而是某种软件 比如浏览器、postman、http client
用户在使用浏览器的时候不需要关注协议的封装只需要告诉它访问什么就可以了
相关文章
|
6月前
|
机器学习/深度学习 PyTorch TensorFlow
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic,深度学习探索者。深耕TensorFlow与PyTorch,分享框架对比、性能优化与实战经验,助力技术进阶。
|
12月前
|
机器学习/深度学习 存储 算法
NoProp:无需反向传播,基于去噪原理的非全局梯度传播神经网络训练,可大幅降低内存消耗
反向传播算法虽是深度学习基石,但面临内存消耗大和并行扩展受限的问题。近期,牛津大学等机构提出NoProp方法,通过扩散模型概念,将训练重塑为分层去噪任务,无需全局前向或反向传播。NoProp包含三种变体(DT、CT、FM),具备低内存占用与高效训练优势,在CIFAR-10等数据集上达到与传统方法相当的性能。其层间解耦特性支持分布式并行训练,为无梯度深度学习提供了新方向。
664 1
NoProp:无需反向传播,基于去噪原理的非全局梯度传播神经网络训练,可大幅降低内存消耗
|
6月前
|
监控 负载均衡 安全
WebSocket网络编程深度实践:从协议原理到生产级应用
蒋星熠Jaxonic,技术宇宙中的星际旅人,以代码为舟、算法为帆,探索实时通信的无限可能。本文深入解析WebSocket协议原理、工程实践与架构设计,涵盖握手机制、心跳保活、集群部署、安全防护等核心内容,结合代码示例与架构图,助你构建稳定高效的实时应用,在二进制星河中谱写极客诗篇。
WebSocket网络编程深度实践:从协议原理到生产级应用
|
7月前
|
机器学习/深度学习 人工智能 算法
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic带你深入卷积神经网络(CNN)核心技术,从生物启发到数学原理,详解ResNet、注意力机制与模型优化,探索视觉智能的演进之路。
626 11
|
7月前
|
机器学习/深度学习 算法 搜索推荐
从零开始构建图注意力网络:GAT算法原理与数值实现详解
本文详细解析了图注意力网络(GAT)的算法原理和实现过程。GAT通过引入注意力机制解决了图卷积网络(GCN)中所有邻居节点贡献相等的局限性,让模型能够自动学习不同邻居的重要性权重。
1307 0
从零开始构建图注意力网络:GAT算法原理与数值实现详解
|
7月前
|
安全 测试技术 虚拟化
VMware-三种网络模式原理
本文介绍了虚拟机三种常见网络模式(桥接模式、NAT模式、仅主机模式)的工作原理与适用场景。桥接模式让虚拟机如同独立设备接入局域网;NAT模式共享主机IP,适合大多数WiFi环境;仅主机模式则构建封闭的内部网络,适用于测试环境。内容简明易懂,便于理解不同模式的优缺点与应用场景。
1020 0
|
9月前
|
机器学习/深度学习 人工智能 PyTorch
零基础入门CNN:聚AI卷积神经网络核心原理与工业级实战指南
卷积神经网络(CNN)通过局部感知和权值共享两大特性,成为计算机视觉的核心技术。本文详解CNN的卷积操作、架构设计、超参数调优及感受野计算,结合代码示例展示其在图像分类、目标检测等领域的应用价值。
497 7
|
11月前
|
监控 应用服务中间件 Linux
掌握并发模型:深度揭露网络IO复用并发模型的原理。
总结,网络 I/O 复用并发模型通过实现非阻塞 I/O、引入 I/O 复用技术如 select、poll 和 epoll,以及采用 Reactor 模式等技巧,为多任务并发提供了有效的解决方案。这样的模型有效提高了系统资源利用率,以及保证了并发任务的高效执行。在现实中,这种模型在许多网络应用程序和分布式系统中都取得了很好的应用成果。
295 35
|
11月前
|
机器学习/深度学习 算法 测试技术
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
本文探讨了基于图的重排序方法在信息检索领域的应用与前景。传统两阶段检索架构中,初始检索速度快但结果可能含噪声,重排序阶段通过强大语言模型提升精度,但仍面临复杂需求挑战
378 0
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
|
10月前
|
安全 Java 程序员
分析Muduo网络库源码中的TcpServer组件工作原理
简言之,TcpServer 在 Muduo 中的角色,就是一位终极交通指挥员,它利用现代计算机网络的魔法,确保数据如同车辆一般,在信息高速公路上自由、安全、高效地流动。
126 0