Android面试之计算机网络基础
前言 :开始总结一份属于自己的面试资料。网上虽有,但是收藏和浏览真的不如理解和吸纳。加油、、
一、各层结构和功能,及都有哪些协议
OSI体系结构为7层,这里我们按TCP/IP体系结构讲五层来讲。
物理层 >>>数据链路层>>>网络层>>>运输层>>>应用层(表示层,会话层)
1.1、应用层
应用层任务:通过应用进程间的通信交互来完成特定的网络应用
应用层协议:应用进程间的通信交互规则
报文:应用层交互的数据单元
支持的协议有:
- 域名系统DNS(Domain Name System)
- 万维网HTTP协议 (HyperText Transfer Protocol)
- 电子邮件的SMTP协议
域名系统DNS:将域名和IP地址相互映射的分布式数据库,能够方便用户快捷访问。比如github,如果你再日本访问,是访问日本的服务器,在中国访问的是中国服务器。所以说他是一个分布式的。
域名协议的作用:将域名转换为IP地址,以找到对应的主机
HTTP协议:超文本传输协议,WWW(万维网)都遵守这个协议。最初的目的是为了发布和接收HTML页面。
应用层大白话 :
这里可以理解为计算机之间的翻译过程,将数据进行二进制编码
1.2、运输层
运输层任务:提供通用的数据传输服务供两台主机进程间的通信
运输层协议:运输层数据传输服务规则
传输层有复用和分用功能;
复用:一台主机可以开启多条线程,多个应用进程可同时使用传输服务
分用:传输层接收消息,根据消息的头部信息交给正确的Socket,也就是交给相应的应用进程
支持的协议有:
- TCP (Transmission Control Protocol)>>> 传输控制协议;面向连接,提供可靠的数据传输服务
- UDP (User Datagram Protocol)>>> 用户数据协议;面向无连接,不保证数据传输的可靠性
(TCP和UDP的将放在后面详细讲)
运输层大白话 :
传输层将上层数据分割成诸多数据段,方便解决出错,且为每段数据封装,头部带有端口号
1.3、网络层
网络层任务:选择合适的网间路由和交换节点,实现终端节点之间的通信。
网络层协议:网络层传输规则
支持的协议:
- IP协议 >>> 把运输层产生的报文和用户数据封装成组合数据包进行传输
- ARP协议 >>> 地址解析协议
- RARP协议 >>> 逆地址解析协议
网络层大白话 :
网络层将上层数据再度封装为IP数据报,报头带有IP地址,用于标识网络逻辑地址
1.4、数据链路层
数据链路层:将数据封装成数据帧,然后在各个链路上传输
丢帧:数据链路层的控制信息在接收端能够检测数据帧中有误差错,如果有误那么丢弃这帧,以免继续传输浪费资源。如果需要更正数据,那么就要采用可靠传输协议纠错。(这就说明数据链路层不仅可以检错还能纠错)
数据链路层大白话 :
数据链路层将上传数据再度封装成数据帧,其MAC头部包含一个重要的MAC地址信息。可以理解为固化在硬件里的物理地址
1.5、物理层
物理层:实现相邻计算机节点之间比特流的透明传输
物理层大白话 :
将上层数据转成电信号在网络中传输
1.6、补充点
常见硬件设备与五层模型的对应关系
应用层:计算机(其实计算机是融合OSI七层于一身的)
传输层:防火墙
网络层:路由器(严格讲和我们家里所用的家用路由器不一致,一般在机房可以见到)
数据链路层:交换机(例如家里的光猫)
物理层:网卡
二、TCP三次握手和四次挥手
TCP三次握手简单示意图:
2.1、为什么要三次握手?
客户端发送SYN(TCP/IP建立的握手信号) --> 服务端接收后发给客户端SYN/ACK 消息响应表示收到了 --> 客户端收到后向服务端发送ACK表示收到了。
SYN:表示客户端到服务端消息无误
ACK:表示服务端到客户端消息无误
举例:正常的男女朋友关系。客户端(女朋友)发送消息“我要睡了” --> 服务端(男朋友)收到消息 发送“晚安”。如果此时客户端(女朋友)就次不回了, 说明这是非正常的男女关系。如果此时客户端(女朋友)发送“安”,说明是双方关系正常,这是你值得娶回家。这就是为什么要三次握手!!!
TCP四次挥手简单示意图:
2.2、为什么要四次挥手
任何一方在没有要发送消息时,都可以发送连接释放通知。注意此时不是完全关闭TCP连接,待对方确认后进入半关闭状态,当另一方也没有消息要发送时,也发送连接释放通知,此时才完全关闭TCP连接。
举例:A 和 B 打电话,通话即将结束后,A 说“我没啥要说的了”,B回答“我知道了”,但是 B 可能还会有要说的话,A 不能要求 B 跟着自己的节奏结束通话,于是 B 可能又巴拉巴拉说了一通,最后 B 说“我说完了”,A 回答“知道了”,这样通话才算结束。
三、TCP,UDP协议的区别
UDP:面向无连接,速率快。不可靠
TCP:在传递数据之前先建立连接,数据传输结束后还要释放资源。可靠但传输速率相对慢。
TCP的可靠性体现在:在传递数据之前建立连接,在数据传递时,通过确认、窗口、重传、拥塞机制来保证数据传输的可靠性。
四、在流浪器中输入url地址 >> 显示主页的过程
1、DNS解析,找到对应的ip地址
2、建立TCP连接
3、发送HTTP请求
4、服务器处理并返回HTTP报文
5、流浪器解析并渲染页面
6、连接结束
五、状态码概括
六、HTTP短连接和长连接
短连接:每次进行网络请求都要建立连接,和中断连接
长连接:网络请求结束后,不会立即中断连接,也不会永久保持连接,而是在设定的时间内,没有传输时会断开。
//使用长连接,会在响应头加入这行代码
Connection:keep-alive
七、Cookie的作用是什么?和Session有什么区别
cookie和Session都是用来跟踪流浪器用户身份的会话方式,但两者用户场景不同。
- Cookie:数据保存在客户端。一些敏感数据不要写入,且最好是加密后,拿到服务端解密
- Session:数据保存在服务端
八、URI和URL有什么区别
URI(Uniform Resource Identifier) :是同一资源标志符,可以唯一标识一个资源
URL(Uniform Resource Location) :是同一资源定位符,可以提供该资源的路径。它是一种具体的 URI,他是URI的子类。
九、HTTP和HTTPS的区别
HTTP:超文本传输协议。URL以“http起始”,端口号默认80。传输完全明文,不做加加密,安全性较低
HTTPS:运行在SSL/TLS上的HTTP,安全性高。URL以“https起始”,端口号默认443
对称加密:密钥只有一个,加密解密为同一个密码,加密速度快。不安全: 如果中间人从通信开始就截取这个密钥,那么信息就泄漏了。
非对称加密:密钥公钥有2个,加密解密使用不同密钥。比如小明有密钥A,公钥B。把公钥B发给小红,小红用公钥B给自己的公钥C加密,发给小明。小明用自己的密钥A解密自己的公钥B得到小红的公钥C。以后小明给小红发消息用小红的公钥c加密,小红给小明发消息用小明的公钥B加密。这样就相对安全了。其实也不绝对安全: 如果中间人把公钥B一开是就截取,替换成自己的公钥,发给小红,同样能截取信息。
SSL/TLS:和非对称加密还不同,是通过流浪器或操作系统上的证书机构完成的。大致意思就是利用流浪器和证书机构的约定的公钥加密,并生成签名。等接收端接收后,用约定的公钥生成签名和接收信息签名比对,无误后,确认没有被中间人劫持过,然后解密获得信息,加密传输信息
参考文献(感谢)
计算机网络基础知识
计算机网络之数据传输过程
计算机网络篇
什么是 HTTPS 协议
Android面试之计算机网络基础相关推荐
- 【Android开发】计算机网络基础知识点,如何完成网络请求过程?
(一)计算机网络基础知识:从一次完整的网络请求过程分析 (1)域名解析 1.1)域名与ip地址 (1)ip地址:ip地址是一个32位(4字节)的二进制数(IPV4),常见格式为:192.168.1.1 ...
- 计算机课app开发,毕业设计(论文)-基于Android的《计算机网络基础》课程App的设计与开发.doc...
Hebei Normal University of Science & Technology专业: Hebei Normal University of Science & Tech ...
- 面试:计算机网络基础详解(一)
计算机网络是计算机.软工类面试的基础,不管是软件/硬件开发.技术支持还是测试职位,都会涉及到计算机网络的基础知识,本文基于笔者之前的面试准备所做的相关知识整理.本文的主要内容: OSI 与 TCP/I ...
- android tcp 最优窗口,Android 面试必备 - 计算机网络基本知识(TCP,UDP,Http,https)...
简介 HTTP协议(超文本传输协议)和 UDP(用户数据包协议),TCP 协议(传输控制协议) TCP/IP是个协议组,可分为四个层次:网络接口层.网络层.传输层和应用层. 在网络层有IP协议.ICM ...
- Android 面试必备 - 线程
前言 最近准备更新 Android 面试必备基础知识系列,有兴趣的可以关注我的微信公众号 stormjun94,有更新时,第一时间会在微信公众号上面发布,同时,也会同步在 GitHub 上面更新,如果 ...
- Android 面试必备 - 系统、App、Activity 启动过程
前言 最近准备更新 Android 面试必备基础知识系列,有兴趣的可以关注我的微信公众号 stormjun94,有更新时,第一时间会在微信公众号上面发布,同时,也会同步在 GitHub 上面更新,如果 ...
- 面试汇总:这是一份全面详细的Android面试指南
核心面试内容 对于Android技术专业面试,主要考察的内容包括:(已按优先级排序) 通用编程基础 计算机基础 特定编程语言 智力题 需要特别注意的是: 编程基础.计算机基础是 所有技术开发都必备的基 ...
- Android 面试必备 - 知识图谱
前言 时间飞逝,转眼间毕业两年多,从事 Android 开发三年了.我在想,也是时候将自己的 Android 整理成一套体系. 这一次的知识体系图谱只涉及到 Android 基础知识部分和设计模式的, ...
- 应该是史上最全最新Java和Android面试题目(自己总结和收集的)
Android面试题目 Java 基础 int占用几个字节 讲一下常见编码方式? UTF-8编码下中文占几个字节 int和Interger的区别 int.char.long各占多少字节数 string ...
最新文章
- HDU 3336 Count the string(KMP+DP)
- 解决crond引发大量sendmail、postdrop进程问题
- CLion 生成CMakeList文件和include文件不存在问题
- ⚡关于Eastmount博客「网络安全自学篇」系列重要通知!!!⚡
- c语言较大的整型相加,二个超长正整数的相加
- mysql用any查询_mysql 5.6有ANY_VALUE功能吗?
- 交换机接口用了那几根线_交换机接口知识大全!网络从业者必懂!
- 基于shell 脚本处理文本数据流程
- visio保存后公式变形_固体力学中的变形分析
- c++解释--百度百科
- notepad++批量操作笔记(持续更新..)
- VSCode下载安装教程(Windows 10)
- 空手套白狼-我的互联网草根创业亲身经历
- cv2.resize()函数不同插值方法比较
- 闪讯利用openwrt路由器拨号教程(五)
- win系统服务器白名单,win10系统如何添加白名单 windows10下添加白名单的方法
- 职场人士必学的10种Excel打印技巧【特别实用,赶紧收藏】
- 【脚本教程】脱机的一些指令参考
- 语音论文:用于端到端语音识别的简化完全量化的Transformer模型
- 【考研】考研经验及教训分享(强烈推荐计算机专业且专业课有计算机组成原理或数据结构的看进来)