计算机基础-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 SSH 无密码登录
1. ssh-keygen -t rsa 2. scp root@ip:/root/.ssh/id_rsa.pub ./id2 3. cat id2 >> authtorized_keys ...
- Large Class--过大的类--要重构的信号
如果想利用单个类做太多事情,其内往往就会出现太多实例变量.一旦如此,Duplicated Code也就接踵而至. 解决方法: 1.将类内彼此相关的变量,将它们放在一起.使用Extrac ...
- loj6102 「2017 山东二轮集训 Day1」第三题
传送门:https://loj.ac/problem/6102 [题解] 贴一份zyz在知乎的回答吧 https://www.zhihu.com/question/61218881 其实是经典问题 # ...
- 剖析 golang 的25个关键字
剖析 golang 的25个关键字 基本在所有语言当中,关键字都是不允许用于自定义的,在Golang中有25个关键字,图示如下: 下面我们逐个解析这25个关键字. var && con ...
- Spring Session加Redis(山东数漫江湖)
session是一个非常常见的概念.session的作用是为了辅助http协议,因为http是本身是一个无状态协议.为了记录用户的状态,session机制就应运而生了.同时session也是一个非常老 ...
- 解决java在对MySQL插入数据时出现乱码问题
1.在连接数据库的时候请注意, 最使用连接连接数据库的时候,必须在后面追加上编码的设置:useUnicode=true&characterEncoding=UTF-8,如下图所示. 参考连接: ...
- 关于scala 集合 List Map Set
1,数组 2,List,ListBuffer 3, Map , mutable.Map
- 边绘边理解prototype跟__proto__
网上流传着一张讲解prototype跟__proto__关系的图,尽管他已经描绘的很清楚了,但对于初学者来说,江太公感觉还是过于纠结,于是起心重绘,让他们之间的关系更加明晰可理解,一方面出于分享目的, ...
- 利用procdump+Mimikatz 绕过杀软获取Windows明文密码
思路: 就是通过系统自带的procdump去下载存储用户名密码的文件(应该不能那么说这个文件,但是这样理解没问题),然后用猕猴桃读取. procdump.exe Procdump是一个轻量级的Sysi ...
- WoW[www]
WoWBeez https://github.com/StealtheeEU/WoWBeez https://github.com/mtucker6784/Elysium https://github ...