计算机基础-day3
网络基础
什么是互联网协议?
互联网协议是计算机网络中为进行数据交换而建立的规则、标准或约定的集合,其定义了计算机如何接入internet,以及接入internet的计算机间通信的一系列统一标准,
为什么要有互联网协议?
就像人与人之间沟通一样,良好的沟通需要用相同的语言,比如都用普通话交流,当交流时各用各自擅长的语言,我用普通话,你用英语,其他人有用法语德语,就会造成沟通上的障碍,而接入网络的不同的计算机之间也存在这一问题,所以需要有一种“共同语言”来支撑不同操作系统的计算机之间的交流,而“互联网协议”就是用来提供这一标准的。
TCP/IP五层模型

应用层(Application layer):为用于通信的应用程序和用于消息传输的底层网络提供接口,常见的应用层协议有:HTTP(超文本传输协议)、HTTPS(安全的超文本传输协议)、FTP(文件传输协议)等,不同的应用能够产生不同的数据。
传输层(Transport Layer):实现端到端的数据传输,在终端用户之间提供透明的数据传输,向上层提供可靠的数据传输服务。主要协议为TCP(可靠)协议和UDP(不可靠)协议,传输的是数据报。
网络层(Network Layer):实现两个端系统之间的数据透明传送,具体功能包括寻址和路由选择、连接的建立、保持和终止等。主要协议是IP协议、ARP(地址解析协议)、ICMP(Internet控制报文协议),传输的是IP数据包
数据链路层(Data Link Layer):在物理层提供的服务的基础上向网络层提供服务,最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层,传输的是数据帧。
物理层(Physical Layer):为设备之间的数据通信提供传输媒体及互连设备,为数据传输提供可靠的环境,常见的物理层设备有网卡、光纤、网线、串口线等,传输的是二进制数据流(bit)。
用户上网流程
1.用户浏览器输入网址(域名地址),请求访问目标地址,因为是域名地址,本机并不能识别,所以需要向配置的dns服务器地址发起解析请求,而本机和目的dns服务器不在同一网络内,所以本机首先需要寻找网关
2.获取网关mac地址,本机在当前网络内发送源mac为本机、目的mac为FF:FF:FF:FF:FF:FF、源ip为本机、目的ip为网关ip的广播(基于udp封装),该网络内所有主机接收后拆开包,网关发现目的ip为自己的,就回复响应,返回自己的mac
3.本机获取网关mac地址后,就准备向dns发起请求,但是本机只知道dns的ip地址,并不知道dns的mac地址,所以首先主机将请求数据进行传输层报头封装、网络层封装含有源ip地址和目的dns ip地址的ip头、数据链路层封装含有本机源mac地址和目的网关mac地址的帧头,以二进制数据流的方式发送给网关,网关收到数据流进行重组并解封帧头,获取目的ip地址,更换源和目的mac重新封装,根据路由表信息进行转发到dns所在网络网关,dns网关重复网关到网关的解封和封装过程将请求包转发给dns服务器
4.dns服务器获取dns网关发送的二进制数据流,进行重组获得数据帧,解除帧头获得ip数据包,解除ip头获得数据报,解除报头获得最终数据,得到用户机的域名解析请求,经过处理将域名解析结果传送给用户,封装过程参考过程3
5.用户获取到web服务器ip地址,即可进行访问,封包和解封包过程参考过程3
计算机基础-day3的更多相关文章
- 计算机基础--Java中int char byte的关系
计算机基础--Java中int char byte的关系 重要:一个汉字占用2byte,Java中用char(0-65535 Unicode16)型字符来存字(直接打印输出的话是字而非数字),当然要用 ...
- Java学习之计算机基础(一)
阅读本文大概需要 4 分钟 想要开始学习Java开发,需要掌握一些必要的计算机基础.如果你是计算机专业的人或者已经学过类似的课程,可以跳过这篇文章的阅读.计算机基础课程有很多,小编在大学里学过的课程就 ...
- 计算机基础-Day1
计算机基础-Day1 一.计算机基础 首先Python是一门编程语言 语言: 那什么是语言?语言就是一种事物与另一种事物沟通的介质. 所以说编程语言是程序员跟计算机沟通的介质,那么为什么要跟计算机沟通 ...
- python计算机基础-Day1
计算机基础-Day1 一.计算机基础 首先Python是一门编程语言 语言: 那什么是语言?语言就是一种事物与另一种事物沟通的介质. 所以说编程语言是程序员跟计算机沟通的介质,那么为什么要跟计算机沟通 ...
- Python之旅_计算机基础入门
一.计算机基础 1.Python是编程语言 语言:一种事物与另一种事物沟通的介质. 编程语言:程序员与计算机沟通的介质. 什么是编程:程序员用编程语言把自己的逻辑思想下来,编程的结果就是一堆文件. 为 ...
- 计算机基础,Python基础--变量以及简单的循环
一.计算机基础 1.CPU 相当于人体的大脑,用于计算处理数据. 2.内存 用于存储数据,CPU从内存调用数据处理计算,运算速度很快. PS:问:既然在内存里的数据CPU运算速度快,为什么计算机不全 ...
- day01计算机基础
今日内容 1.计算机初步认识 1.计算机认识 1. 计算机基础 1.1硬件:cpu/内存/硬盘/主板/网卡 1.2操作系统 linux:免费开源 windows mac 1.3解释器/编译器 补充:编 ...
- Java面试题 Web+EJB & Spring+数据结构& 算法&计算机基础
六.Web 部分:(共题:基础40 道,基础37 道,中等难度3 道) 122.说出Servlet 的生命周期,并说出Servlet 和CGI 的区别? [基础] 答:Web 容器加载Servlet ...
- python note 01 计算机基础与变量
1.计算机基础. 2.python历史. 宏观上:python2 与 python3 区别: python2 源码不标准,混乱,重复代码太多, python3 统一 标准,去除重复代码. 3.pyth ...
随机推荐
- (转)Linux下使Shell 命令脱离终端在后台运行
转自: http://www.linuxidc.com/Linux/2011-05/35723.htm 方法如下: (1)输入命令: nohup 你的shell命令 & (2)回车,使终端回到 ...
- Spring理论基础-面向切面编程
AOP是Aspect-Oriented Programming的缩写,中文翻译是面向切面编程.作为Spring的特征之一,是要好好学习的. 首先面向切面编程这个名称很容易让人想起面向对象编程(OOP) ...
- Berland National Library
题目链接:http://codeforces.com/problemset/problem/567/B 题目描述: Berland National Library has recently been ...
- python初步学习-pycharm使用
Pycharm简介 PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试.语法高亮.Project管理.代码跳转.智能提示.自动完成. ...
- 一些达成共识的JavaScript编码风格约定【转】
如果你的代码易于阅读,那么代码中bug也将会很少,因为一些bug可以很容被调试,并且,其他开发者参与你项目时的门槛也会比较低.因此,如果项目中有多人参与,采取一个有共识的编码风格约定非常有必要.与其他 ...
- Ribbon的主要组件与工作流程
一:Ribbon是什么? Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起.Ribbon客户端组件提供一系列完善的配置项如连接 ...
- spin lock的理解
为什么在spin lock保护的代码里面不允许有休眠的操作呢? 因为spin lock不是空实现的前提下(内核没关抢占,或者是SMP打开),spin lock中是关抢占的,如果一个进程A拿到锁,内核抢 ...
- python基础===单元测试unittest
''' 编写一个名为Employee 的类,其方法__init__()接受名.姓和年薪,并 将它们都存储在属性中.编写一个名为give_raise()的方法,它默认将年薪增加5000 美元,但也能够接 ...
- nginx学习时使用EditPuls编辑conf.xml
一.Nginx简介:是一个使用c语言开发的高性能的http服务器及反向代理服务器 二.由于在linux环境中使用vim修改配置文件相对困难.为此,我们可以借助EditPlus将虚拟机上面的目录引用到E ...
- 微信支付之SHA256签名失败
在接微信支付的时候,或多或少会遇到签名失败,本人接入的时候也遇了不少次: 总结如下: 1.参数没有经过ASCII排序 2.参数包含中文未经过UTF-8标准转化加密后的签名不对应(经本人测验:加密算法要 ...