网络基础

什么是互联网协议?

互联网协议是计算机网络中为进行数据交换而建立的规则、标准或约定的集合,其定义了计算机如何接入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的更多相关文章

  1. 计算机基础--Java中int char byte的关系

    计算机基础--Java中int char byte的关系 重要:一个汉字占用2byte,Java中用char(0-65535 Unicode16)型字符来存字(直接打印输出的话是字而非数字),当然要用 ...

  2. Java学习之计算机基础(一)

    阅读本文大概需要 4 分钟 想要开始学习Java开发,需要掌握一些必要的计算机基础.如果你是计算机专业的人或者已经学过类似的课程,可以跳过这篇文章的阅读.计算机基础课程有很多,小编在大学里学过的课程就 ...

  3. 计算机基础-Day1

    计算机基础-Day1 一.计算机基础 首先Python是一门编程语言 语言: 那什么是语言?语言就是一种事物与另一种事物沟通的介质. 所以说编程语言是程序员跟计算机沟通的介质,那么为什么要跟计算机沟通 ...

  4. python计算机基础-Day1

    计算机基础-Day1 一.计算机基础 首先Python是一门编程语言 语言: 那什么是语言?语言就是一种事物与另一种事物沟通的介质. 所以说编程语言是程序员跟计算机沟通的介质,那么为什么要跟计算机沟通 ...

  5. Python之旅_计算机基础入门

    一.计算机基础 1.Python是编程语言 语言:一种事物与另一种事物沟通的介质. 编程语言:程序员与计算机沟通的介质. 什么是编程:程序员用编程语言把自己的逻辑思想下来,编程的结果就是一堆文件. 为 ...

  6. 计算机基础,Python基础--变量以及简单的循环

    一.计算机基础 1.CPU 相当于人体的大脑,用于计算处理数据. 2.内存  用于存储数据,CPU从内存调用数据处理计算,运算速度很快. PS:问:既然在内存里的数据CPU运算速度快,为什么计算机不全 ...

  7. day01计算机基础

    今日内容 1.计算机初步认识 1.计算机认识 1. 计算机基础 1.1硬件:cpu/内存/硬盘/主板/网卡 1.2操作系统 linux:免费开源 windows mac 1.3解释器/编译器 补充:编 ...

  8. Java面试题 Web+EJB & Spring+数据结构& 算法&计算机基础

    六.Web 部分:(共题:基础40 道,基础37 道,中等难度3 道) 122.说出Servlet 的生命周期,并说出Servlet 和CGI 的区别? [基础] 答:Web 容器加载Servlet ...

  9. python note 01 计算机基础与变量

    1.计算机基础. 2.python历史. 宏观上:python2 与 python3 区别: python2 源码不标准,混乱,重复代码太多, python3 统一 标准,去除重复代码. 3.pyth ...

随机推荐

  1. centos6.8+openvpn实现账户密码连接(通过端口映射的方式)

    #搭建openvpn(编译安装) 初始化环境 #update epel mirror yum install wget -y cd /etc/yum.repos.d && rm -rf ...

  2. Maven-Optional Dependencies & Dependency Exclusion

    本文讨论可选依赖和排除依赖.  帮助用户理解它们是什么, 如何使用, 它们如何工作, 以及什么时候使用它们最合适. 本文也将解释为什么排除是基于单个依赖的, 而非POM级别的. Optional De ...

  3. Tomcat报错:Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/JFreeChartTest]]

    最好把项目移除,然后在tomcat的webapps发布路径下也把项目文件删掉,重新部署就好了,原因是可能在tomcat的remove覆盖中以前的文件有所保留导致冲突,亲测有效

  4. 五分钟学习Java8的流编程

    1.概述 Java8中在Collection中增加了一个stream()方法,该方法返回一个Stream类型.我们就是用该Stream来进行流编程的: 流与集合不同,流是只有在按需计算的,而集合是已经 ...

  5. 数据分析之CE找数据大法

    一.基本介绍 CE的全称为Cheat Engine,是一款内存修改编辑工具,其官网是http://www.cheatengine.org,可以在其官网下载到最新的CE工具,目前最新版本是Cheat E ...

  6. Connections between cities(LCA)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2874 题目: Problem Description After World War X, a lot ...

  7. 浅谈JobExecutionContext与JobDataMap

    1.JobExecutionContext简介 (1)当Scheduler调用一个Job,就会将JobExecutionContext传递给job的execute方法 quartz无法调用job的有参 ...

  8. SQL注入之逗号拦截绕过

    目前所知博主仅知的两个方法 1.通过case when then 2.join [一]case when then mysql,,,,,,, ) ) end; +----+-----------+-- ...

  9. epoll内核源码分析

    转载:https://www.nowcoder.com/discuss/26226?type=0&order=0&pos=27&page=1 /*  *  fs/eventpo ...

  10. JS中Unix时间戳转换日期格式

    <!doctype html> <html> <head> <title>Unix时间戳转换成日期格式</title> <script ...