网络基础

什么是互联网协议?

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

    sscanf也太好用了8我竟然一直都不知道qaq #include<cstdio> #include<cstdlib> #include<cstring> #inc ...

  2. 【BZOJ】1705: [Usaco2007 Nov]Telephone Wire 架设电话线

    [题意]给定一排n根杆高度hi,一个常数C,杆升高x的代价为x^2,相邻两杆之间架设电话线代价为高度差*C,求总代价最小. [算法]DP+辅助数组优化 [题解]令f[i][j]表示第i根杆高度为j的最 ...

  3. UIToolBar的半透明属性设置

      UIToolBar的半透明属性设置style:Translucent(Ps:长得很像翻译translation)   https://www.evernote.com/shard/s227/sh/ ...

  4. 虽然UIImageView是UIScollView的子视图,但UIImageView左上角是contentOfSet的原点

      虽然UIImageView是UIScollView的子视图,但UIImageView左上角是contentOfSet的原点   https://www.evernote.com/shard/s22 ...

  5. NodeJS 微信公共号开发 - 响应微信发送的Token验证(山东数漫江湖)

    背景 使用 NodeJS 进行微信公共号开发,首先需要响应微信发送的Token验证,官方文档 填写服务器配置 登录微信公共平台,在开发下的基本配置打开该页面. 依次填写接口的 URL.自定义的 Tok ...

  6. HDU 1372 Knight Moves (广搜)

    题目链接 Problem Description A friend of you is doing research on the Traveling Knight Problem (TKP) whe ...

  7. 玩一下易语言 "和"字有多种读音,注定了它的重要性!!

    变量名 类型 静态 数组 备注 拼音 文本型   0   测试的汉字 文本型       有几种发音 整数型       i 整数型       测试用的汉字 = “和” 有几种发音 = 取发音数目 ...

  8. hdu 1879 继续畅通工程 (并查集+最小生成树)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1879 继续畅通工程 Time Limit: 2000/1000 MS (Java/Others)    ...

  9. 使用ubuntun16.04代码笔记

    (1)cd  /代表到根目录下面:ls表示将盘中内容列出:cd  /home表是打开根目录下的home文件夹:(注意:凡是根目录下的文件夹前面都要加 /) (2)快捷键方式:可以用tab自动补全 (1 ...

  10. [New learn]动画-基于UIView

    原文:https://developer.apple.com/library/ios/documentation/WindowsViews/Conceptual/ViewPG_iPhoneOS/Ani ...