黑马程序员JAVA笔记8--网络编程

------- android培训java培训、期待与您交流! ----------

网络编程

一、网络参考模型

七层描述

    1. 物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由10转化为电流强弱来进行传输,到达目的地后再转化为10,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。

    2. 数据链路层:主要将从物理层接收的数据进行MAC地址(网卡的地址)的封装与解封装。常把这一层的数据叫做帧。在这一层工作的设备是交换机,数据通过交换机来传输。
    3. 网络层:主要将下层接收到的数据进行IP地址(例,192.168.0.1)的封装与解封装。在这一层工作的设备是路由器,常把这一层的数据叫做数据包。
    4. 传输层:定义了一些传输数据的协议和端口号(WWW端口号80等),如:TCP(传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据),UDP(用户数据报协议,与TCP特性恰恰相反,用于传输可靠性要求不高,数据量小的数据,如QQ聊天数据就是通过这种方式传输的)。主要是将从下层接收的数据进行分段和传输,到达目的地址后再进行重组。常常把这一层叫做段。
    5. 会话层:通过传输层(端口号:传输端口与接收端口)建立数据传输的通路。主要在你的系统之间发起会话或者接收会话请求(设备之间需要互相认识可以是IP也可以是MAC或者是主机名)。
    6. 表示层:主要是进行对接收的数据进行解释,加密与解密、压缩与解压缩等(也就是把计算机能够识别的东西转换成人能够识别的东西(如图片、声音等)。
    7. 应用层:主要是一些终端的应用,比如说FTP(各种文件下载)、WEBIE浏览)、QQ之类的(可以把它理解成我们在电脑屏幕上可以看到的东西,就是终端应用)。

注释:
    1、每个网卡的MAC地址都是全球唯一的。
    2、路由器实现将数据包发送到指定的地点。
    3、应用软件之间通信的过程就是层与层之间封包、解封包的过程。

    4OSI参考模型虽然设计精细,但过于麻烦,效率不高,因此才产生了简化版的TCP/IP参考模型。

 

二、网络通讯要素

(1IP地址:InetAddress

        网络中设备的标识。

        不易记忆,可用主机名。

        本地回环地址:127.0.0.1 主机名:localhost

 

注释:

    1、查看本机IP地址。

    2IPV4数量已经不够分配,所以产生了IPV6

    3、在没有连接互联网的情况,为了让访问本机方便,所以分配了一个默认的IP地址,也就是本地回环地址。

    4、通过ping 127.0.0.1可以测试网络是不是通,如果不通,可能是网卡出问题了。

     5、每台机器都有自己指定的计算机名。

 

2)端口号

        用于标识进程(应用程序)的逻辑地址,不同进程的标识。         
        有效端口:0~65535,其中0~1024系统使用或保留端口。

注释:
    1、当一台计算机A向另一台计算机B发送QQ信息时,首先路由器通过数据包中的IP地址定位该信息发送到哪一台机器。然后计算机B接收到数据包后,通过此数据包中的端口号定位到发送给本机的QQ应用程序。

    2、所谓防火墙,其功能就是将发送到某程序端口的数据屏蔽掉以及将从该程序端口发出的数据也屏蔽掉。
         

3)传输协议
        通讯的规则。
        常见协议:UDPTCP

    UDP
    将数据及源和目的封装成数据包中,不需要建立连接。
    每个数据报的大小在限制在64k内。
    因无连接,是不可靠协议。
    不需要建立连接,速度快。

    应用案例:QQFeiQ聊天、在线视频用的都是UDP传输协议。

    TCP
    建立连接,形成传输数据的通道。
    在连接中进行大数据量传输。
    通过三次握手完成连接,是可靠协议。
    必须建立连接,效率会稍低。

    应用案例:FTPFile Transfer Protocol(文件传输协议)。

三、域名解析

    在浏览器中输入新浪的域名,DNS解析域名成IP,然后计算机再通过获取到的IP访问新浪服务器。  

    域名解析,最先走是本地的hostsC:\WINDOWS\system32\drivers\etc\hosts)文件,解析失败了,才去访问DNS服务器解析、获取IP地址。  

四、UDP协议-发送端&接收端
   Socket
    Socket就是为网络服务提供的一种机制。
    通信的两端都有Socket
    网络通信其实就是Socket间的通信。
    数据在两个Socket间通过IO传输。

    UDP传输
    DatagramSocket(用来发送和接收数据报包的套接字)与DatagramPacket(数据报包)。
    建立发送端,接收端。
    建立数据包。
    调用Socket的发送接收方法。
    关闭Socket
    发送端与接收端是两个独立的运行程序。

五、TCP协议-客户端&服务端

    客户端(Client)首先与服务端(Server)建立连接,形成通道(其实就是IO流),然后,数据就可以在通道之间进行传输,并且单个Server端可以同时与多个Client端建立连接。

    SocketServerSocket,建立客户端和服务器端.
    建立连接后,通过Socket中的IO流进行数据的传输。
    关闭socket
    同样,客户端与服务器端是两个独立的应用程序。

    TCP客户端
    客户端需要明确服务器的ip地址以及端口,这样才可以去试着建立连接,如果连接失败,会出现异常。
    连接成功,说明客户端与服务端建立了通道,那么通过IO流就可以进行数据的传输,而Socket对象已经提供了输入流和输出流对象,通过getInputStream(),getOutputStream()获取即可。
    与服务端通讯结束后,关闭Socket

    TCP服务端
    服务端需要明确它要处理的数据是从哪个端口进入的。
    当有客户端访问时,要明确是哪个客户端,可通过accept()获取已连接的客户端对象,并通过该对象与客户端通过IO流进行数据传输。
    当该客户端访问结束,关闭该客户端。

六、了解客户端和服务器端原理

    最常见的客户端:浏览器,IE/chrome

    最常见的服务端:服务器,Tomcat

 

为了了解其原理:

    1. 自定义服务端   

    使用已有的客户端IE,了解一下客户端向服务端发了什么请求。

    发送的请求是:

 

        (请求行,请求方式:GET;请求的资源路径:/HTTP协议版本:1.1。)

         GET / HTTP/1.1           

                  

        (请求消息头,属性名:属性值。)

        Host: localhost:9090

        Connection: keep-alive

        Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

        User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36

        Accept-Encoding: gzip, deflate, sdch

        Accept-Language: zh-CN,zh;q=0.8

 

注释:
    1、消息头中属性名及属性值的具体含义,初学者不用追究,在JavaWeb课程中将会深入讲解。
    2HTTP是一个客户端和服务端请求和应答的标准,客户端按照HTTP的标准发送数据到服务端,服务端按照HTTP的标准解析收到的数据。很多软件都内置了此标准。

 

    2. 模拟一个浏览器获取信息

    HTTP服务端发回的应答消息:

        (应答行,HTTP的协议版本:1.1;应答状态码:200;应答状态描述信息:OK。)
        HTTP/1.1 200 OK
        (应答消息属性信息,属性名:属性值。)
        Server: Apache-Coyote/1.1
        Accept-Ranges: bytes
        ETag: W/"211-1433908112666"
        Last-Modified: Wed, 10 Jun 2015 03:48:32 GMT
        Content-Type: text/html
        Content-Length: 211
        Date: Wed, 10 Jun 2015 03:52:16 GMT
        Connection: close

注释:
    1、应答行中属性名及属性值的具体含义,初学者不用追究,在JavaWeb课程中将会深入讲解。

    URL&URLConnection
    URI:统一资源标示符。
    URL:统一资源定位符,也就是说根据URL能够定位到网络上的某个资源,它是指向互联网“资源”的指针。
    每个URL都是URI,但不一定每个URI都是URL。这是因为URI还包括一个子类,即统一资源名称(URN),它命名资源但不指定如何定位资源。

    常见网络结构
    1. C/S client/server
        特点:
            该结构的软件,客户端和服务端都需要编写。
            开发成本较高,维护较为麻烦。
        好处:
            客户端在本地可以分担一部分任务。例如,杀毒软件直接对本机文件进行杀毒。

    2. B/S browser/server
        特点:
            该结构的软件,只开发服务器端,不开发客户端,因为客户端直接由浏览器取代。
            开发成本相对低,维护更为简单。
        缺点:
            所有运算都要在服务端完成。

    常见客户端和服务端

    最常见的客户端:

        浏览器:IE

    最常见的服务端:

        服务器:Tomcat

 

    服务器处理客户端的请求,并且返回响应信息。

 

注释:

    关于Tomcat的内部机制等知识将会在JavaWeb课程中做为重点讲解,同学们在这里了解即可。

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值