您的位置:首页 > 理论基础 > 计算机网络

网络请求相关内容总结

2015-04-10 14:42 344 查看

网络请求相关内容总结

网络数据传输,熟悉多线程、Socket网络编程、熟悉TCP、UDP、HTTP等协议

网络编程概述:

网络模型:

OSI模型

应用层

表示层

会话层

传输层

网络层

数据连接层

物理层

TCP/IP模型

应用层

传输层

网际层

主机至网络层

网络通讯要素

IP地址

端口号

传输协议

网络通讯前提:

找到对方IP

数据要发送到指定端口。为了标示不同的应用程序,所以给这些网络应用程序都用数字进行标示这个表示就叫端口

定义通信规则。这个规则称为通信协议,国际组织定义了通用协议TCP/IP

TCP和UDP的区别:

UDP协议:

面向无连接

每个数据报的大小在限制在64k内

因为是面向无连接,所以是不可靠协议

不需要建立连接,速度快

TCP协议:

必须建立连接,形成传输数据的通道

在连接中可进行大数据量传输

通过三次握手完成连接,是可靠协议

必须建立连接,效率会稍低

三次握手:

第一次:我问你:在么?

第二次:你回答:在。

第三次:我反馈:哦,我知道你在。

Socket:

Socket就是为网络服务提供的一种机制

通信的两端都有Socket

网络通信其实就是Socket间的通信

数据在两个Socket间通过IO传输

玩Socket主要就是记住流程,代码查文档就行

UDP(User Datagram Protocol):用户数据协议

UDP概述:

需要DatagramSocket与DatagramPacket对象来实现UDP协议传输数据

UDP协议是一种面向无连接的协议。面向无连接的协议指的是正式通信前不必与对方先建立连接,不管对方连接状态就直接发送数据。

UDP协议开发步骤:

发送端:

建立DatagramSocket服务;

提供数据,并将数据封装到字节数组中;

创建DatagramPacket数据包,并把数据封装到包中,同时指定接收端IP和接收端口

通过Socket服务,利用send方法将数据包发送出去;

关闭DatagramSocket和DatagramPacket服务。

接收端:

建立DatagramSocket服务,并监听一个端口;

定义一个字节数组和一个数据包,同时将数组封装进数据包;

DatagramPacket的receive方法,将接收的数据存入定义好的数据包;

通过DatagramPacke关闭的方法,获取发送数据包中的信息;

关闭DatagramSocket和DatagramPacket服务。

UDP协议的Demo(必须掌握):

发送端:

java 

class UDPSend { 

    public static void main(String[] args) throws Exception { 

        DatagramSocket ds = new DatagramSocket(); 

        byte[] buf = "这是UDP发送端".getBytes(); 

        DatagramPacket dp = new DatagramPacket( 

            buf,buf.length,InetAddress.getByName("192.168.1.253"),10000); 

        ds.send(dp); 

        ds.close(); 

    } 

}


接收端

java 

class UDPRece { 

    public static void main(String[] args) throws Exception { 

        DatagramSocket ds = new DatagramSocket(10000); 

        byte[] buf = new byte[1024]; 

        DatagramPacket dp = new DatagramPacket(buf,buf.length); 

        ds.receive(dp);//将发送端发送的数据包接收到接收端的数据包中 

        String ip = dp.getAddress().getHosyAddress();//获取发送端的ip 

        String data = new String(dp.getData(),0,dp.getLength());//获取数据 

        int port = dp.getPort();//获取发送端的端口号 

        sop(ip+":"+data+":"+port); 

        ds.close(); 

    } 

}


TCP/IP协议:Socket和ServerSocket

基于TCP协议的网络通信概述:

TCP/IP通信协议是一种必须建立连接的可靠的网络通信协议。它在通信两端各建立一个Socket,从而在通信的两端之间形成网络虚拟链路。

网络虚拟链路一旦建立,两端的程序就可以进行通信。

TCP/IP协议开发步骤:

客户端:

建立Socket服务,并指定要连接的主机和端口;

获取Socket流中的输出流OutputStream,将数据写入流中,通过网络发送给服务端;

获取Socket流中的输出流InputStream,获取服务端的反馈信息;

关闭资源。

服务端:

建立ServerSocket服务,并监听一个端口;

通过ServerSocket服务的accept方法,获取Socket服务对象;

使用客户端对象的读取流获取客户端发送过来的数据;

通过客户端对象的写入流反馈信息给客户端;

关闭资源

TCP/IP协议的一个Demo(必须要掌握!):

客户端:

java 

class TCPClient { 

    public static void main(String[] args) { 

        Socket s = new Socket("192.168.1.253",10000); 

        OutputStream os = s.getOutputStream(); 

        out.write("这是TCP发送的数据".getBytes()); 

        s.close(); 

    } 

}


服务端:

class TCPServer {
    public static void main(String[] args) {
        ServerSocket ss = new ServerSocket(10000);
        Socket s = ss.accept();

        String ip = s.getInetAddress().getHostAddress();
        sop(ip);

        InputStream is = s.getInputStream();
        byte[] buf = new byte[1024];
        int len = is.read(buf);
        sop(new String(buf,0,len));
        s.close();
        ss.close();
    }
}


HTTP协议:

HTTP是Hyper Text Transfer Protocol的缩写

是由W3C制定和维护的。目前版本为1.0和1.1

是开发web的基石,非常地重要

版本

1.0版本:是无状态的协议,即一次连接只响应一次请求,响应完了就关闭此次连接要想再访问须重新建立连接。而连接都是比较耗资源的。

1.1版本:是有状态的协议。即可以在一次网络连接基础上发出多次请求和得到多次的响应。当距离上次请求时间过长时,服务器会自动断掉连接,这就是超时机制。

HTTP协议的组成:

请求部分:

请求行:

GET / HTTP/1.1 包含:请求方式GET 请求的资源路径:/ 协议版本号:HTTP/1.1

请求方式。常用的有GET、POST

GET方式:默认方式。直接输入的网址。

表单数据出现在请求行中。url?username=abc&password=123

特点:不安全;有长度限制:<1k

POST方式:可以通过表单form method=”post”设置

表单数据会出现在正文中。

特点:安全;没有长度限制

请求消息头:

请求正文:第一个空行之后的全部都是请求正文

响应部分:

响应行:

HTTP/1.1 200 OK 包含:协议版本号:HTTP/1.1 响应码:200 描述:OK

响应码:(实际用到的30个左右,其他都是W3C保留的)

描述:对响应码的描述

常用响应码:

200:一切正常

302/307:请求的资源路径变更了

304:资源没有被修改过

404:资源不存在,找不到资源

500:服务器程序有错

响应消息头:

响应正文:

第一个空行之后的全部都是响应正文,浏览器显示的就是正文中的内容

邮箱 :charon.chui@gmail.com

Good Luck!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: