因为本身学院的课非常“国际化”,基本上将软工和CS常见的一些课,例如编译原理、汇编语言、计算机网络等都用 CMU 的 ICS 和 MIT 的 CSE 代替了,因此前面那些课我都没学过,编译汇编两个还好,对实际开发编码影响没那么大,但是计网从自己的实际需求出发,感觉掌握的还是太浅了,而且从找实习的情况来看,外面的面试官又不知道你学没学过,都是默认计网是必修课,答的不好就会刷掉你,因此还是写一篇总结,完善一下计网里的基础知识吧。

网络分层架构

OSI分层

总共七层,由上而下为:

  • 应用层:直接为用户的应用进程提供服务,其中应用层协议包括万维网的HTTP协议,电子邮件的SMTP协议,文件传输的FTP协议等
  • 表示层:它对来自应用层的命令和数据进行解释,对各种语法赋予相应的含义,并按照一定的格式传送给会话层。其主要功能是“处理用户信息的表示问题,如编码、数据格式转换和加密解密”等
  • 会话层:是用户应用程序和网络之间的接口,主要任务是:向两个实体的表示层提供建立和使用连接的方法。将不同实体之间的表示层的连接称为会话。因此会话层的任务就是组织和协调两个会话进程之间的通信,并对数据交换进行管理
  • 运输层:传输层提供会话层和网络层之间的传输服务,这种服务从会话层获得数据,并在必要时,对数据进行分割。然后,传输层将数据传递到网络层,并确保数据能正确无误地传送到网络层。因此,传输层负责提供两节点之间数据的可靠传送,当两节点的联系确定之后,传输层则负责监督工作
  • 网络层:其主要任务是:通过路由选择算法,为报文或分组通过通信子网选择最适当的路径。该层控制数据链路层与传输层之间的信息转发,建立、维持和终止网络的连接。
  • 数据链路层:该层的主要功能是:通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路
  • 物理层:物理层的主要功能是:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输

TCP/IP 的体系结构

四层,由上而下为:

  • 网络接口层:定义像地址解析协议(Address Resolution Protocol,ARP)这样的协议,提供TCP/IP协议的数据结构和实际物理硬件之间的接口。
  • 网际层:本层包含IP协议、RIP协议(Routing Information Protocol,路由信息协议),负责数据的包装、寻址和路由。同时还包含网间控制报文协议(Internet Control Message Protocol,ICMP)用来提供网络诊断信息。
  • 运输层TCP/UDP:提供TCP和UDP
  • 应用层:对应于OSI七层参考模型的应用层和表达层

五层协议的体系结构

在学习计算机网络原理是往往采用折中的办法,即综合OSI和TCP/IP的优点,采用一种只有五层协议的体系结构,这样既简洁又能将概念阐述清楚,由上而下为:
应用层,运输层,网络层,数据链路层,物理层

ARP协议工作原理

首先,每台主机都会在自己的ARP缓冲区中建立一个 ARP列表,以表示IP地址和MAC地址的对应关系。当源主机需要将一个数据包要发送到目的主机时,会首先检查自己 ARP列表中是否存在该 IP地址对应的MAC地址,如果有,就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。此ARP请求数据包里包括源主机的IP地址、硬件地址、以及目的主机的IP地址。网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致。如果不相同就忽略此数据包;如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个 ARP响应数据包,告诉对方自己是它需要查找的MAC地址;源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。

在浏览器中输入www.baidu.com后执行的全部过程

点击网址后,应用层的DNS协议会将网址解析为IP地址;

DNS查找过程:
1. 浏览器会检查缓存中有没有这个域名对应的解析过的IP地址,如果缓存中有,这个解析过程就将结束。
2. 如果用户的浏览器缓存中没有,浏览器会查找操作系统缓存(hosts文件)中是否有这个域名对应的DNS解析结果。
3. 若还没有,此时会发送一个数据包给DNS服务器,DNS服务器找到后将解析所得IP地址返回给用户。

在应用层,浏览器会给web服务器发送一个HTTP请求;

请求头为:GET http://www.baidu.com/HTTP/1.1

在传输层,(上层的传输数据流分段)HTTP数据包会嵌入在TCP报文段中;

TCP报文段需要设置端口,接收方(百度)的HTTP端口默认是80,本机的端口是一个1024-65535之间的随机整数,这里假设为1025,这样TCP报文段由TCP首部(包含发送方和接收方的端口信息)+ HTTP数据包组成。

在网络层中,TCP报文段再嵌入IP数据包中;

IP数据包需要知道双方的IP地址,本机IP地址假定为192.168.1.5,接受方IP地址为220.181.111.147(百度),这样IP数据包由IP头部(IP地址信息)+TCP报文段组成。

在网络接口层,IP数据包嵌入到数据帧(以太网数据包)中在网络上传送;

数据帧中包含源MAC地址和目的MAC地址(通过ARP地址解析协议得到的)。这样数据帧由头部(MAC地址)+IP数据包组成。

数据包经过多个网关的转发到达百度服务器,请求对应端口的服务;

服务接收到发送过来的以太网数据包开始解析请求信息,从以太网数据包中提取IP数据包—>TCP报文段—>HTTP数据包,并组装为有效数据交与对应线程池中分配的线程进行处理,在这个过程中,生成相应request、response对象。

请求处理完成之后,服务器发回一个HTTP响应;

请求处理程序会阅读请求及它的参数和cookies。它会读取也可能更新一些数据,并将数据存储在服务器上。处理完毕后,数据通过response对象给客户输出信息,输出信息也需要拼接HTTP协议头部分,关闭后断开连接。断开后,服务器端自动注销request、response对象,并将释放对应线程的使用标识(一般一个请求单独由一个线程处理,部分特殊情况有一个线程处理多个请求的情况)。
响应头为:HTTP/1.1200 OK

浏览器以同样的过程读取到HTTP响应的内容(HTTP响应数据包),然后浏览器对接收到的HTML页面进行解析,把网页显示出来呈现给用户。

客户端接收到返回数据,去掉对应头信息,形成也可以被浏览器认识的页面HTML字符串信息,交与浏览器翻译为对应页面规则信息展示为页面内容。

许可协议

  • 本文遵守创作共享 CC BY-NC-SA 3.0协议
  • 商业用途转载请联系 Chen.Jiayang [AT] foxmail.com
  • 个人主页 chenjiayang.me

网络分层架构 ARP baidu.com 访问过程 知识点总结相关推荐

  1. 计算机网络知识复习-计算机网络相关概念及网络分层架构模型

    1.计算机网络相关概念 1.计算机网络: 计算机网络是将分散在不同地点且具有独立功能的多个计算机系统,利用通信设备和通信线路相互连接起来,在网络协议和软件的支持下进行数据通信,实现信息传递和资源共享的 ...

  2. 计算机网络知识复习(day01)--计算机网络相关概念及网络分层架构模型

    参考书籍:<图解TCP/IP>.<计算机网络-谢希仁> 1.计算机网络相关概念 1.计算机网络: 计算机网络是将分散在不同地点且具有独立功能的多个计算机系统,利用通信设备和通信 ...

  3. 一文入门网络编程:常见协议、通信过程、Socket、CS/BS、TCP/UDP

    网络编程三要素:ip地址.端口.协议,在网络通信协议下,不同计算机上运行的程序,可以进行数据传输 常见协议: 传输层 常见协议有TCP/UDP协议. 应用层 常见的协议有HTTP协议,FTP协议. 网 ...

  4. IOT-OS之RT-Thread(十三)--- 网络分层结构 + netdev/SAL原理

    文章目录 一.网络分层结构 二.RT-Thread网络分层结构 2.1 ENC28J60设备驱动层 2.2 设备无关接口层netdev 2.3 网络协议层LwIP 2.4 协议无关接口层SAL 2.5 ...

  5. 【网络知识点】网络基本架构

    最近都在整理系统相关知识,网络方面的知识还没有开始整理,但赶紧网络这分类有点空,今天就分享一下网络的基础知识--网络基本架构 网络基本架构算是最最最基础的知识点,对于这个基本架构,叫法可能有出入,但大 ...

  6. 我是如何用JSP在网络上架构一个网上招标系统,以推进网站无纸化,过程电子化,管理智能化的发展

    声明:部分代码参考与网络,如有侵权请联系博主删除,博主本着学习的态度和大家一起成长. 项目github地址:https://github.com/sunmenglei/sunmengleiwangsh ...

  7. 浏览器访问www.baidu.com的过程

    浏览器访问www.baidu.com的过程 解析baidu.com域名,获取ip地址 根据ip地址,进行连接(tcp的3次握手) 连接成功后,http协议将请求发送给WEB服务器 WEB服务器根据请求 ...

  8. 网络--网络分层,网络协议,IP地址

    1.以太网 1.1什么是以太网? 以太网是目前最为广泛应用的计算机网络技术.他分为两种:一种是经典以太网,另一种是交换式以太网,使用了交换机连接 不同的设备.交换式以太网的网速大于经典式以太网.以太网 ...

  9. 计算机网络-网络分层模型及基本网络协议

    1. 网络分层模型 1.1 分层模型图示 1.2 七层模型及各层含义 1 物理层(Physical Layer) 激活.维持.关闭通信端点之间的机械特性.电气特性.功能特性以及过程特性.该层为上层协议 ...

最新文章

  1. js如何生成一个对象,并转化为json字符串
  2. 必看!Spark 进阶之路之「SparkSQL」入门概述 | 博文精选
  3. 过春节,坐汽车回家的朋友,注意了。。
  4. Angular - ng-repeat高级用法
  5. PHP header函数的用法辨析,有点意思
  6. LeetCode(905)——按奇偶排序数组(JavaScript)
  7. Cloud 已死,本地部署万岁!
  8. TCP通信过程中各步骤的状态---(简单解释)
  9. Poj(1274),二分图匹配
  10. Python 判断素数(质数)的方法讲解
  11. 为了自己的梦想而努力
  12. activiti-超时自动审批
  13. 生产任务计划单,金蝶KIS旗舰版专业版K3WISE,生产管理软件ERP,金蝶生产任务管理,生产计划管理,自动下推生产领料单
  14. 学习文档【超详细中文版】(小甲鱼视频)
  15. IReport 使用记录 主报表和子报表数据传递
  16. 电脑PC端利用android-sdk使用微信、360云盘等应用
  17. 科技百咖 | 志翔科技:一个“清华中老年创业天团”的故事
  18. C语言程序设计-算数运算符、赋值运算符、逗号运算符及表达式
  19. shell编程经典案例,建议收藏
  20. 华为手机备份的通讯录是什么文件_手机怎么备份通讯录?华为手机备份方法大全...

热门文章

  1. win10/win7文件夹或文件查看方式怎么统一设置
  2. 哈工大计算机专业复试科目,哈工大 计算机科学与技术学院复试科目.doc
  3. 查询局域网内在线电脑IP地址
  4. 虚言妙诀终虚见,面试躬行是致知,Python技术面试策略与技巧实战记录
  5. nopi 缩小字体填充_我在超市里改字体
  6. world中英文字体分离、字符间距较大解决
  7. python类型转换方法_详解python中的类型转换方法
  8. java将图片url转换成数据流输出到前端
  9. Gartner魔力象限图横竖轴
  10. 主流加密通信应用Signal在中国“失联”