OSI网络七层参考模型


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

TCP/IP协议实现


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/tcplinux操作系统一切皆文件 网络连接可以是一个文件 打印机可以是一个文件以文件目录的方式来表示内核最终会把它转换成socket

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

GET / HTTP/1.0\n

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

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


echo是打印通过-e来识别换行符\nhttp协议是拿换行符做切割得到一行行字符串每行字符串会用空格做切割遇到2个换行符之后才是post body信息

8<> 表示将输入输出的2个方向都给到了百度

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

将输出重定向到了81>& 标准输出8的输出又指向了sokcet 给百度了百度如果接受到了 那么就会给返回那么就需要读取该返回内容

socket网络通讯是双向的 有输出就有输入

给百度发送了http请求协议头 文本

cat 0<& 8

读取socket 8中流回的内容

如果长时间没读取 那么就会断开连接

再来一次

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

cd /proc/$$/fd


当前解释程序的进程ID是1307fd是文件描述符任何程序都有IO 都会打开文件 socket也是文件

0是程序指向终端的标准输入 system.in1是标准输入system.out2是system.error

这3个是任何程序都有的socket 也可以给出一个数字也可以是一个递增的数字 来代表这个socket

fd文件描述符可以理解成一个变量 在java中 open一个文件得到一个file变量

lsof -p $$


012是指向终端的输入输出


9是一个tcp


本机随机端口号指向了百度的一个地址 80端口号 http协议9 就是代表了对百度的一个socket

socket怎么建立的?实际上是由内核完成的

总结


连接不需要人管连上之后 客户端和服务端之间的通讯 你说啥?牵扯到http协议 连的是web server服务器所以用的http协议连的是ftp服务器连的是ftp协议

应用程序application里面会有协议封装的过程这个协议封装不是内核做的而是某种软件 比如浏览器、postman、http client用户在使用浏览器的时候不需要关注协议的封装只需要告诉它访问什么就可以了

网络通讯原理简介以及演示通讯过程相关推荐

  1. CAN通讯原理简介(一)

    目录 1.CAN通讯概述 2.CAN通讯特点 3.CAN通讯的差分信号 4.CAN通讯的数据帧介绍 1.CAN通讯概述 CAN 是 Controller Area Network 的缩写(以下称为 C ...

  2. 小牛485通讯原理_plc和变频器通讯接线图详解

    plc与变频器两者是一种包含与被包含的关系,PLC与变频器都可以完成一些特定的指令,用来控制电机马达,PLC是一种程序输入执行硬件,变频器则是其中之一,但是PLC的涵盖范围又比变频器大,还可以用来控制 ...

  3. 网络爬虫——原理简介

    全面剖析网络爬虫(笔记) 抓取网页 深入理解URL URI :Universal Resource Identifier(通用资源标识符)的缩写,Web 上每种可用的资源,如HTML文档.图像.视频片 ...

  4. 网络搜索引擎原理简介

    据中国互联网络信息中心统计,目前搜索引擎是仅次于电子邮件的第二大Internet的应用.搜索引擎技术的研究与应用逾来逾广,正成为计算机工业界和学术界争相研究和开发的对象. 搜索引擎虽然品种繁多.功能不 ...

  5. 网络工程师入门/底层通讯原理-李强强-专题视频课程

    网络工程师入门/底层通讯原理-204人已学习 课程介绍         网络工程师是通过学习和训练,掌握网络技术的理论知识和操作技能的网络技术人员.网络工程师能够从事计算机信息系统的设计.建设.运行和 ...

  6. 01-iOS之wifi通讯开发简介

    wifi通讯开发 1.1-wifi通讯简介 1.wifi通讯原理介绍 wifi通讯的本质上是网络传输,只不过wifi通讯使用的并不是我们传统的HTTP协议,而是UDP协议 想要了解UDP协议,则必须要 ...

  7. OPC通讯开发简介——基于WTOPCSVR的OPC服务器端和基于WTCLIENT的OPC客户端开发

    OPC通讯开发简介--基于WTOPCSVR的OPC服务器端和基于WTCLIENT的OPC客户端开发 说明 一.OPC技术背景及介绍 二.OPC通讯的流程(OPC经典架构) 三.OPC标准官方文件部分变 ...

  8. 38.CAN通讯原理与配置

    CAN通讯原理与配置 参考资料 探索者STM32F407开发板 <STM32F4开发指南-库函数版本>--CAN通讯实验 CAN参考资料 <STM32中文参考手册_V10>-第 ...

  9. ajax通讯原理,ajax通讯原理以及自己封装一个ajax函数

    ajax通讯原理 要解释ajax的原理,需要从旧的交互方式开始,当用户触发一个http请求到服务器,服务器对其进行处理之后,再返回一个新的html页到客户端,每当服务器处理客户端提交的请求时,客户都只 ...

最新文章

  1. htc d10w android 7.0,LineageOS 17.1即将发布:基于Android 10,大量老款手机支持
  2. python是否安装oracle接口,python安装oracle扩展及数据库连接方法
  3. android 启动第三方程序的代码(利用ComponentName)
  4. 我的新书终于写完了。
  5. The Network Adapter could not establish the connection解决
  6. fw313r虚拟服务器,迅捷FW313R无线wifi怎么设置上网 - falogincn登录页面
  7. Anaconda 3 详细安装教程
  8. Redis入门小案例
  9. Fragment、FragmentActivity、Fragment生命周期及Fragment组件穿透
  10. 8、乐趣国学—“不迁怒,不贰过”
  11. ubuntu20.04修改mac地址
  12. 读王阳明二知行合一2有感
  13. Atmega16驱动三轴加速度传感器MMA7455
  14. 图片处理之thumbnailator和TwelveMonkeys的使用
  15. HBase MapReduce MultiTableInput首次测试
  16. 人可以活很多次,但是七年就是一辈子
  17. Light OJ 1197
  18. C++标准库(第二版,作者_NicolaiMJosuttis)_第六章标准模板库_概述
  19. Win10右键菜单添加管理员方式打开cmd
  20. 【MATLAB统计分析与应用100例】案例011:matlab读取Excel数据,调用regress函数作一元线性回归分析

热门文章

  1. php 存在键,php判断数组中是否存在指定键(key)的方法
  2. jeecg集成积木报表错误_6688种玩法的电子积木,是什么体验?「中外玩具网测评」...
  3. 北京理工大学计算机系郭伟,【记忆辉煌2014】品学兼优榜样——郭伟(2012级研究生)...
  4. mysql 主从 通俗易懂_MySQL 主从同步架构中你不知道的“坑”(完结篇)
  5. TIME_WAIT和CLOSE_WAIT
  6. Linux运维之道之ENGINEER1.3(配置SMB共享,配置NFS共享)
  7. Java 轻量级锁原理详解(Lightweight Locking)
  8. 限制UI只能在屏幕内移动(放大或缩小屏幕同样适用)
  9. 基于Promise对象的新一代Ajax API--fetch
  10. 贪心算法——找纸币问题