计算机网络的基础知识

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

主机有两个或多个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就是中国的主干网,

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异常



阅读更多
换一批

没有更多推荐了,返回首页