网络的基础知识
l 什么是路由器,它的作用是什么
路由器最大的作用就是使得多台电脑共享一台电脑的ip ,可以把外网分为多个计算机使用,提高效率.
l 什么是交换机,它 的作用是什么
你住在一幢小区楼里,最开始楼上楼下有什么事儿喊一嗓子就知道了,但人一多就会噪音扰民,你听到的大部分内容都与你无关,这很困扰。于是大家约定,有什么事儿都通过书信,传达室大爷负责投递。如果要跟小区外的人通信,传达室大爷会再将其转交给邮递员蜀黍。这样一来每个人分工明确,职责清楚:大爷负责小区内的通信,蜀黍负责小区外的通信。没有大爷行不行?当然可以,但邮递员蜀黍的负担大大增加,本来他只要一到小区门口把成捆的信件丢给传达室大爷就走人了,现在要挨家挨户敲门。(当然小区人不多的话,可以去他大爷的)总结一下,喊一嗓子=集线器;传达室大爷=交换机;邮递员蜀黍=路由器。 如果要跟外部通信,必须要用路由器;如果是家庭网络,相当于小区住户不多,路由器完全可以兼任交换机的角色;
如果是网吧,就必须要由交换机来分摊内部通信压力了
l 网络分几层,它们各自的作用是什么
Osi7层:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层.
TCP/ip协议:物理层,传输层,会话层 ,应用层
l Host是什么,它的作用
hosts文件是一个算机文件。这个文件负责将主机名映射到相应的IP地址。hosts文件通常用于补充或取代网络中DNS, 和DNS不同的是,计算机的用户可以直接对hosts文件进行控制。
l Dns是什么,它的作用是什么
DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串,但是电脑用户不能直接去操 作它,故一般用host代替.
l Tcp/ IP协议的介绍
TCP/IP协议是一个协议族,主要功能是为网络传输提供服务。TCP/IP协议分为4层,链路层、传输层、网络层和应用层。每一层完成不同的功能,共同作用完成网络传输服务。其 中,下面 的3层:链路层、传输层、网络层主要是完成网络传输的,只有应用层对用户来说可见,例如:常见的http、ftp都是应用层协议,
l UDP协议的介绍
UDP 不需要连接,速度快,每个数据包的大小限制在64k内,不安全,有可能丢失文件,在注重速度的时候使用UDP---》如:视频聊天时,qq ,微信用的就是udp.
l Sockect编程的基本介绍
l Http编程的基本介绍
1.支持客户/服务器模式。 2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。 由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。 3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。 4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。 5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一 方面,在服务器不需要先前信息时它的应答就较快
l cookie和sseion介绍
具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。
l 缓存的机制
浏览器缓存(BrowserCaching)是为了节约网络的资源加速浏览,浏览器在用户磁盘上对最近请求过的文档进行存储,当访问者再次请求这个页面时,浏览器就可以从本地磁盘显示文档,这样就可以加速页面的阅览
l 内网和外网的区别
内网即局域网,比如网吧的所有电脑就在一个内网;反之,即外网
l 传输层的基本工作原理
l 应用层的基本工作原理
l 会话层的基本工作原理
l 传输介质的介绍
l 数据链路层的基本工作原理
l 电脑如何连接网络
HTTP状态码
当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。
HTTP状态码的英文为HTTP Status Code。
下面是常见的HTTP状态码:
- 200 - 请求成功
- 301 - 资源(网页等)被永久转移到其它URL
- 404 - 请求的资源(网页等)不存在
- 500 - 内部服务器错误
HTTP状态码分类
HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP状态码共分为5种类型:
分类 | 分类描述 |
---|---|
1** | 信息,服务器收到请求,需要请求者继续执行操作 |
2** | 成功,操作被成功接收并处理 |
3** | 重定向,需要进一步的操作以完成请求 |
4** | 客户端错误,请求包含语法错误或无法完成请求 |
5** | 服务器错误,服务器在处理请求的过程中发生了错误 |
HTTP状态码列表:
状态码 | 状态码英文名称 | 中文描述 |
---|---|---|
100 | Continue | 继续。客户端应继续其请求 |
101 | Switching Protocols | 切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议 |
200 | OK | 请求成功。一般用于GET与POST请求 |
201 | Created | 已创建。成功请求并创建了新的资源 |
202 | Accepted | 已接受。已经接受请求,但未处理完成 |
203 | Non-Authoritative Information | 非授权信息。请求成功。但返回的meta信息不在原始的服务器,而是一个副本 |
204 | No Content | 无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档 |
205 | Reset Content | 重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域 |
206 | Partial Content | 部分内容。服务器成功处理了部分GET请求 |
300 | Multiple Choices | 多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择 |
301 | Moved Permanently | 永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替 |
302 | Found | 临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI |
303 | See Other | 查看其它地址。与301类似。使用GET和POST请求查看 |
304 | Not Modified | 未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源 |
305 | Use Proxy | 使用代理。所请求的资源必须通过代理访问 |
306 | Unused | 已经被废弃的HTTP状态码 |
307 | Temporary Redirect | 临时重定向。与302类似。使用GET请求重定向 |
400 | Bad Request | 客户端请求的语法错误,服务器无法理解 |
401 | Unauthorized | 请求要求用户的身份认证 |
402 | Payment Required | 保留,将来使用 |
403 | Forbidden | 服务器理解请求客户端的请求,但是拒绝执行此请求 |
404 | Not Found | 服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面 |
405 | Method Not Allowed | 客户端请求中的方法被禁止 |
406 | Not Acceptable | 服务器无法根据客户端请求的内容特性完成请求 |
407 | Proxy Authentication Required | 请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权 |
408 | Request Time-out | 服务器等待客户端发送的请求时间过长,超时 |
409 | Conflict | 服务器完成客户端的PUT请求是可能返回此代码,服务器处理请求时发生了冲突 |
410 | Gone | 客户端请求的资源已经不存在。410不同于404,如果资源以前有现在被永久删除了可使用410代码,网站设计人员可通过301代码指定资源的新位置 |
411 | Length Required | 服务器无法处理客户端发送的不带Content-Length的请求信息 |
412 | Precondition Failed | 客户端请求信息的先决条件错误 |
413 | Request Entity Too Large | 由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息 |
414 | Request-URI Too Large | 请求的URI过长(URI通常为网址),服务器无法处理 |
415 | Unsupported Media Type | 服务器无法处理请求附带的媒体格式 |
416 | Requested range not satisfiable | 客户端请求的范围无效 |
417 | Expectation Failed | 服务器无法满足Expect的请求头信息 |
500 | Internal Server Error | 服务器内部错误,无法完成请求 |
501 | Not Implemented | 服务器不支持请求的功能,无法完成请求 |
502 | Bad Gateway | 充当网关或代理的服务器,从远端服务器接收到了一个无效的请求 |
503 | Service Unavailable | 由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中 |
504 | Gateway Time-out | 充当网关或代理的服务器,未及时从远端服务器获取请求 |
505 | HTTP Version not supported |
TCP/IP 协议
TCP/IP 是不同的通信协议的大集合。
协议族
TCP/IP 是基于 TCP和 IP这两个最初的协议之上的不同的通信协议的大集合。
TCP - 传输控制协议
TCP 用于从应用程序到网络的数据传输控制。
TCP 负责在数据传送之前将它们分割为 IP包,然后在它们到达的时候将它们重组。
IP - 网际协议(Internet Protocol)
IP 负责计算机之间的通信。
IP 负责在因特网上发送和接收数据包。
HTTP - 超文本传输协议(Hyper Text Transfer Protocol)
HTTP 负责 web服务器与 web浏览器之间的通信。
HTTP 用于从 web客户端(浏览器)向 web服务器发送请求,并从 web服务器向 web客户端返回内容(网页)。
HTTPS - 安全的 HTTP(Secure HTTP)
HTTPS 负责在 web服务器和 web浏览器之间的安全通信。
作为有代表性的应用,HTTPS会用于处理信用卡交易和其他的敏感数据。
SSL - 安全套接字层(Secure Sockets Layer)
SSL 协议用于为安全数据传输加密数据。
SMTP - 简易邮件传输协议(Simple Mail Transfer Protocol)
SMTP 用于电子邮件的传输。
MIME - 多用途因特网邮件扩展(Multi-purpose Internet Mail Extensions)
MIME 协议使 SMTP有能力通过 TCP/IP网络传输多媒体文件,包括声音、视频和二进制数据。
IMAP - 因特网消息访问协议(Internet Message Access Protocol)
IMAP 用于存储和取回电子邮件。
POP - 邮局协议(Post Office Protocol)
POP 用于从电子邮件服务器向个人电脑下载电子邮件。
FTP - 文件传输协议(File Transfer Protocol)
FTP 负责计算机之间的文件传输。
NTP - 网络时间协议(Network Time Protocol)
NTP 用于在计算机之间同步时间(钟)。
DHCP - 动态主机配置协议(Dynamic Host Configuration Protocol)
DHCP 用于向网络中的计算机分配动态 IP地址。
SNMP - 简单网络管理协议(Simple Network Management Protocol)
SNMP 用于计算机网络的管理。
LDAP - 轻量级的目录访问协议(Lightweight Directory Access Protocol)
LDAP 用于从因特网搜集关于用户和电子邮件地址的信息。
ICMP - 因特网消息控制协议(Internet Control Message Protocol)
ICMP 负责网络中的错误处理。
ARP - 地址解析协议(Address Resolution Protocol)
ARP - 用于通过 IP来查找基于 IP地址的计算机网卡的硬件地址。
RARP - 反向地址转换协议(Reverse Address Resolution Protocol)
RARP 用于通过 IP查找基于硬件地址的计算机网卡的 IP地址。
BOOTP - 自举协议(Boot Protocol)
BOOTP 用于从网络启动计算机。
PPTP - 点对点隧道协议(Point to Point Tunneling Protocol)
PPTP 用于私人网络之间的连接(隧道)。
TCP/IP 邮件
电子邮件是 TCP/IP 最重要的应用之一。
您不会用到...
当您写邮件时,您不会用到 TCP/IP。
当您写邮件时,您用到的是电子邮件程序,例如莲花软件的 Notes,微软公司出品的 Outlook,或者 Netscape Communicator 等等。
邮件程序会用到...
您的电子邮件程序使用不同的 TCP/IP协议:
· 使用 SMTP来发送邮件
· 使用 POP从邮件服务器下载邮件
· 使用 IMAP连接到邮件服务器
SMTP- 简单邮件传输协议
SMTP 协议用于传输电子邮件。SMTP负责把邮件发送到另一台计算机。
通常情况下,邮件会被送到一台邮件服务器(SMTP服务器),然后被送到另一台(或几台)服务器,然后最终被送到它的目的地。
SMTP 也可以传送纯文本,但是无法传输诸如图片、声音或者电影之类的二进制数据。
SMTP 使用 MIME协议通过 TCP/IP网络来发送二进制数据。MIME协议会将二进制数据转换为纯文本。
POP -邮局协议
POP 协议被邮件程序用来取回邮件服务器上面的邮件。
假如您的邮件程序使用 POP,那么一旦它连接上邮件服务器,您的所有的邮件都会被下载到邮件程序中(或者称之为邮件客户端)。
IMAP- 因特网消息访问协议
与 POP 类似,IMAP协议同样被邮件程序使用。
IMAP 协议与 POP协议之间的主要差异是:如果 IMAP连上了邮件服务器,它不会自动地将邮件下载到邮件程序之中。
IMAP 使您有能力在下载邮件之前先通过邮件服务器端查看他们。通过 IMAP,您可以选择下载这些邮件或者仅仅是删除它们。比方说您需要从不同的位置访问邮件服务器,但是仅仅希望回到办公室的时候再下载邮件,IMAP在这种情况下会很有用
1.一台主机至少有一个IP地址,这个IP是全网唯一的,如果一台
主机有两个或多个IP地址,则该主机属于两个或多个逻辑网络,
一般用作路由器,ip 地址由32位的3进制数据构成,这样比较容易记忆
2.ip地址由网络号,主机号两部分组成,网络号相同的主机可以互相访问,
根据网络规模的大小将IP地址分为5类,ABCDE。
3.A:第一个字节用作网络号,并且最高位为0,这样只有7位可以表示网络号,
减去全是0和全是1的地址,只能表示126个网络号,3个字节用做主机号,
2的24次方,约为1600万,范围是1到126。
4.B :前两个字节用作网络号,最大网络数2的14次方减2,最高位是10,范围是
128到191,可以容纳的主机数为2的16次方减2,约为6万个。这类ip地址通常用于
中等规模的网络
5.C:前三后一,254,通常用于小型的网络。
6 D:1110,留给体系委员使用”
7 E:保留到今后使用
8.子网掩码:假如一个单位申请到了B类地址,但是该公司只有1万台电脑,、
这样就浪费了近5万个地址,为了解决这个问题,引入了子网字段。
9.子网掩码将本单位主机划分为若干子网,用IP地址前几个位置作为“子网号字段”,避免
网桥造成的麻烦,子网掩码可以使得同一类的IP地址属于不同的子网,
10.在intenet中分布着一些覆盖很广的大网络,这种网络叫做internet主干网,他们属于国家级的广域网
,如chinanet,cernet就是中国的主干网,
12.Internet服务,WWW服务,电子邮件服务,文件传输服务,
13.由铜制成的双绞线,同轴电缆,光纤传输,无线接入系统。
14.电脑配置tcp/ip ,进入控制面板,进入查看网络状态和任务,点击更改适配器设置,双击本地连接,
进入常规tab页面,查看信息,选中自动获取本地ip之后,选中手动配置子网掩码等数据。
15.osi开放系统互联参考模型,
机器语言和汇编语言都称之为低级语言,Java,c,PHP都称之为高级语言。
编译程序和解释程序,
高级语言被变成机器语言,称之为编译程序,直接执行高级语言称之为解释程序。
操作系统:
操作系统能有效的组织管理系统中的各种软件硬件资源,合理地组织计算机系统工作流程,控制程序的执行,并向用户提供
一个良好的接口。
19.操作系统:处理机管理,文件管理,存储管理,设备管理,作业管理。
20.操作系统的类型:批处理操作系统,单道批处理和多道批处理,分时操作系统,
实时操作系统,网络操作系统,分布式操作系统,微机操作系统,嵌入式操作系统。
21.处理机管理其实就是进程管理,其核心是合理地分配处理机的时间,提高系统的效率。
1.物理层的单位是比特,数据链路层是帧,网络层是数据包(路由器就在网络层),
传输层是数据段,
2.IP是协议的第二层(网络层),TCP(传输层),4层分别为
主机到网络层,网络互联层,传输层,应用层。
3.首先TCP/IP是一个协议簇,里面包括很多协议的。UDP只是其中的一个。之所以命名为TCP/IP协议, 因为TCP,IP协议是两个很重要的协议,就用他两命名了。
4.TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,即在收发数据钱 ,都需要与对面建立可靠的链接,
这也是面试经常会问到的TCP的三次握手以及TCP的四次挥手! 三次握手: 建立一个TCP连接时,
需要客户端和服务端总共发送3个包以确认连接的建立, 在Socket编程中,这一过程由客户端执行connect来触发,具体流程图如下:
5.UDP(User Datagram Protocol)用户数据报协议,非连接的协议,传输数据之前源端和终端不 建立连接,
当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。 在发送端,
UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽 的限制;
在接收端,UDP把每个消息段放在队列中,
应用程序每次从队列中读一个消息段。 相比TCP就是无需建立链接,结构简单,无法保证正确性,容易丢包
6.四大类:
InetAddress: 用于标识网络上的硬件资源
URL: 统一资源定位符,通过URL可以直接读取或者写入网络上的数据
Socket和ServerSocket: 使用TCP协议实现网络通信的Socket相关的类
Datagram: 使用UDP协议,将数据保存在数据报中,通过网络进行通信
7.socket编程的流程:
Step 1:创建ServerSocket对象,绑定监听的端口
Step 2:调用accept()方法监听客户端的请求
Step 3:连接建立后,通过输入流读取客户端发送的请求信息
Step 4:通过输出流向客户端发送响应信息
Step 5:关闭相关资源
8.ServerSocket serverSocket = new ServerSocket(12345);
InetAddress address = InetAddress.getLocalHost();
String ip = address.getHostAddress();
Socket socket = null;
//2.调用accept()等待客户端连接
System.out.println("~~~服务端已就绪,等待客户端接入~,服务端ip地址: " + ip);
socket = serverSocket.accept();
//3.连接后获取输入流,读取客户端信息
InputStream is=null;
InputStreamReader isr=null;
BufferedReader br=null;
OutputStream os=null;
PrintWriter pw=null;
is = socket.getInputStream(); //获取输入流
isr = new InputStreamReader(is,"UTF-8");
br = new BufferedReader(isr);
String info = null;
while((info=br.readLine())!=null){//循环读取客户端的信息
System.out.println("客户端发送过来的信息" + info);
}
socket.shutdownInput();//关闭输入流
socket.close();
9.Step 1:创建Socket对象,指明需要链接的服务器的地址和端号
Step 2:链接建立后,通过输出流向服务器发送请求信息
Step 3:通过输出流获取服务器响应的信息
Step 4:关闭相关资源
代码实现:
MainActivity.java:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn_accept = (Button) findViewById(R.id.btn_accept);
btn_accept.setOnClickListener(this);
}
@Override
public void onClick(View v) {
new Thread() {
@Override
public void run() {
try {
acceptServer();
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
}
private void acceptServer() throws IOException {
//1.创建客户端Socket,指定服务器地址和端口
Socket socket = new Socket("172.16.2.54", 12345);
//2.获取输出流,向服务器端发送信息
OutputStream os = socket.getOutputStream();//字节输出流
PrintWriter pw = new PrintWriter(os);//将输出流包装为打印流
//获取客户端的IP地址
InetAddress address = InetAddress.getLocalHost();
String ip = address.getHostAddress();
pw.write("客户端:~" + ip + "~ 接入服务器!!");
pw.flush();
socket.shutdownOutput();//关闭输出流
socket.close();
}
}
因为Android不允许在主线程(UI线程)中做网络操作,所以这里需要我们自己 另开一个线程来连接Socket!
运行结果:
点击按钮后,服务端控制台打印
10.http的底层工作流程,TCP/IP 协议的三次握手,SYN是建立连接的握手信号,ACK是确认数据接收无误。
11。Http请求头包括:数据的格式,数据的编码,服务器的host,输入的网址,请求的方法,目前的状态,
请求数据的大小,返回有数据大小,数据类型,服务器名称,时间大小,
12。
100~199 : 成功接受请求,客户端需提交下一次请求才能完成整个处理过程
200: OK,客户端请求成功
300~399:请求资源已移到新的地址(302,307,304)
401:请求未授权,改状态代码需与WWW-Authenticate报头域一起使用
403:Forbidden,服务器收到请求,但是拒绝提供服务
404:Not Found,请求资源不存在,这个就不用说啦
500:Internal Server Error,服务器发生不可预期的错误
503:Server Unavailable,服务器当前不能处理客户端请求,一段时间后可能恢复正常
13。httpURLConnection流程:创建一个url对象,调用openConnection()方法,调用
getInputStream()获取服务器副会的输入流。,通过disconnect()关闭连接。
14.httpClient使用流程:
创建client对象,调用execute()方法发送请求,该方法会返回一个HttpResponse,
调用getEntity()获取服务器的响应内容。
15.XML数据解析:
sax解析,采用的是流式解析,解析是同步的,读到哪里就处理哪里
dom解析,采用的是先把xml读到内存里面,然后访问,比较耗费内存
pull:android默认使用pull方式来解析xml文件。
16.JSON数据解析:
答:JavaScript Object Natation, 一种轻量级的数据交换格式, 与XML一样,
广泛被采用的客户端和服务端交互的解决方案!具有良好的可读和便于快速编写的特性
[
{"id":"1","name":"shixinfa","age":"19"},
{"id":"2","name":"shixinfa1","age":"10"},
{"id":"3","name":"shixinfa2","age":"100"}
]
这些API都存在于org.json包下,而我们用到的类有下面这些:
JSONObject: Json对象,可以完成Json字符串与Java对象的相互转换
JSONArray: Json数组,可以完成Json字符串与Java集合或对象的相互转换
JSONStringer: Json文本构建类,这个类可以帮助快速和便捷的创建JSON text,
每个JSONStringer实体只能对应创建一个JSON text
JSONTokener:Json解析类
JSONException:Json异常