网络基础

计算机网络 :

分布在不同地理区域的计算机与专门的外部设备,

用通信线路连接成一个规模大,功能强的网络系统 , 

使计算机可以方便的传递信息,共享硬件,软件,数据信息等资源,称为计算机网络.

网络分类 :

规模和范围 : 局域网 , 城域网 , 广域网

网络拓扑结构: 星型 , 总线 ,  环形 等

传输介质: 双绞线 ,同轴电缆和光线 等

网络工作模式 :

客户机 / 服务器模式 ( client / server )

浏览器 / 服务器模式 ( browser / server )

对等式网络  ( peer to peer )

专门服务结构 ( Server - Based )

网络通信协议 :

计算机向在网络间进行通信必须遵循一定的标准.

这些标准以协议的形式出现.不同计算机之间必须使用相同的通信协议才能机械能通信.

例如 :  对数据传输速率的限制, 传输数据格式的限制 出错控制等等.

主要的网络协议:

TCP/IP

英文是Transmission Control Protocol/Internet Protocol的缩写,

意思是“传输控制协议/网际协议”

此外还有HTTP , FTP , SMTP , UDP 和 POP3/IMAP 等协议

TCP/IP 

它为分散的和不同类型的硬件提供了一个通用的编程接口,

TCP 协议    是面向连接的可靠的数据传输协议

IP 协议       支持网络间连接的数据报通信

基本传输单位是数据包(datagram)

网络基础_第1张图片

网络基础_第2张图片

网络基础_第3张图片

TCP连接的三次握手

TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。

第一次握手:

                    建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;

                    SYN:同步序列编号(Synchronize Sequence Numbers)。

第二次握手:

                    服务器收到syn包,必须确认客户的SYNack=j+1),同时自己也发送一个SYN包(syn=k),

                    即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:

                   客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),

                    此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手

IP

    为实现Internet上不同计算机之间的通信,每台计算机都必须有一个不与其它计算机重复的地址---IP地址

IP地址是数字型的,32(32bit),由4个 8位的二进制数组成,每8位之间用圆点隔开,

一般在实际中看到的大部分IP地址都是以十进制的数据形式表示的,如192.168.6.101

IP地址分为5类,A类保留给政府机构,B类分配给中等规模的公司,C类分配给任何需要的人,D类用于组播,E类用于实验,各类可容纳的地址数据不同。

.

地址分类

地址范围

1

A类地址

1.0.0.1——126.255.255.254

2

B地址

128.0.0.1——191.255.255.254

3

C地址

192.0.0.1——223.255.255.254

4

D地址

244.0.0.1——239.255.255.254

5

E地址

240.0.0.1——255.255.255.254

关于域名 : 域名容易记忆,不能直接用于网络主机的查询,域名只能被域名服务器解析转化为IP地址后才能起到作用。

关于端口 : 是计算机连接网络的逻辑接口,

                通过端口应用机制才可使计算机可能提供多种服务,共享一条物理通道

                端口是一个软件结构,被客户程序或服务程序用来发送和接收数据,一台服务器有256*256个端口

关于端口号: 具有网络功能的应用软件的标识号

    Ø0-1023是公认端口号,即已经公认定义或为将要公认定义的软件保留的

    Ø1024-65535是并没有公共定义的端口号,用户可以自己定义这些端口的作用。

    Ø端口与协议有关:TCPUDP的端口互不相干



UDP

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


(面向无连接的数据传输,不可靠,但效率高)


1.UDP是一种面向无连接的通信协议。UDP向应用程序提供了一种发送封装的原始IP数据报的方法,

   并且发送时无需建立连接不保证可靠数据的传输。一次发送数据不可超过64KB

   UDP不被应用于那些使用虚电路的面相直接服务,UDP主要用于面向查询--应答的服务.

   UDP的通信基本模式 : 将数据打包,然后将数据发往目的地,接收别人发来的数据包,然后查看数据包中的内容

2.UDP编程所需要的类

DatagramSocket 用来发送和接收数据包的套接字

DatagramPacket 此类表示数据包

–DatagramPacket( byte [ ]  buf , int  length , InetAddress  address , int  port )

–buf-包数据

–length -包长度

–address -目的地址

                        port -目的端口号 

ds = new DatagramSocket(端口);//创建字buff节数组接收

DatagramPacket  dp = new DatagramPacket(X)  ;  //表示数据包

X

接收时:buff,buff.length/数据包,包长度

1,定义UDPsocket服务

2,定义 一个数据包,因为要存储接收到的字节数据

因为数据包对象中有更多功能可以提取字节数据中的不同数据信息

3,通过socket服务的receive接收方法,将接收到的数据存入已定义好的数据包中,

4 通过数据包对象的特有功能,将这些不同的数据取出,打印在控制台上

     String ip = dp.getAddress().getHostAddress

    String data = new String (dp.getData(),0,dp.getLength())

5,关闭流

将接收数据放入str将其输出

并关闭

ds.close();

byte data[ ]=new byte[100];
int length=90;
DatagramPacket pack = new DatagramPacket(data,length);
DatagramSocket receiver = new DatagramSocket(980);

//与发送包时定义的端口号一致
receiver.receive(pack)

——————————————————————————

发送时:

 1,创建UDP服务,通过DatagramSocket对象。

 2,确定数据,并封装成数据包。

        DatagramPacket( byte[ ] buf , int length , Address,port ) ;

 3, 通过Socket服务,将已有的数据包发送出去,通过send,

 4,关闭资源。

    将所送的数据放入str

str. getBytes () , str. getBytes(). length() , InetAddress . getByName( "127.0.0.1" ) , 2046 );//本机IP

ds.send(dp);//将数据发送

并结束

ds.close(); 




URL

URL(Uniform Resource Locators,统一资源定位器)是一种 资源定位的工具。URL值是使用数字和字母的排列来表示网络中的某一资源(文件、目录、对对象的引用)的地址

URL的基本结构:

   <传输协议名称>//〈主机名端口号〉/〈文件名〉#〈引用

    如:http://www.mbalib.com/china/index.htm


http://:代表超文本传输协议

www:代表一个万维网服务器

mbalib.com/:服务器的域名,或服务器名称

China/:子目录,类似于我们的文件夹

Index.htm:是文件夹中的一个文件

/china/index.htm统称为URL路径


URL类位于java.net包中,表示URL地址。

构造方法:

     URL(addr);

常用方法:

getProtocol():返回URL中的协议名称

getHost():返回URL中的主机名。

getPort():返回URL中的端口号。如果URL中没有设定端口号,该函数返回-1

public class URLDemo {

  public static void main(String[] args) {

  try {

              URL url = new

              URL("http://www.163.com");

              SysO ("the protocol:" + url.getProtocol());

              SysO("the hostname:" + url.getHost());

              SysO("the port:" +  url.getPort());

  } catch (MalformedURLException e) {

  System.out.println(e);}}}

网络基础_第4张图片

public class InetAddressDemo {

  public static void main(String args[]) throws

              UnknownHostException {

          InetAddress ia;

          ia = InetAddress.getLocalHost();

          System.out.println(ia.getHostName());

          System.out.println(ia.getHostAddress());

          ia = InetAddress.getByName("www.163.com");

          System.out.println(ia.getHostName());

          System.out.println(ia.getHostAddress());

  }

}

附加:web资源访问原理

在浏览器中输入网址后,浏览器先去访问Windows的host文件,获取主机名对应的IP,如果找不到,就去查询DNS,获取主机名对应的IP;查询到IP后,就访问网址的服务器,发送HTTP请求;

1,查询Windows ,获取主机名对应的ip

2,如果没找到就去查询DNS,获取主机名对应的ip

3,用查询到的ip连上服务器

4,发送http请求

5,从请求信息中获取客户端向访问的主机名

6,从请求信息中获取客户端访问的web应用

7,从请求信息中获取客户端想访问的web资源

8,读取相应主机下的,web应用下的web资源

9,用读取到的web资源的数据,创建一个http响应

10,服务器回送http响应

11,浏览器收到HTTP响应后,解析出资源数据显示

请求例如:

GET/mail/1.html HTTP/1.1

Accept: */*

Accept-Language: zh-cn

UA-CPU: x86

Host: www.google.com

Connction:Keep-Alive

此时可以发现主机名起到两个作用:

①用于查询对应的IP

②服务器去获取客户机所想访问的的指定主机

响应例如:

HTTP/1.1 200 OK

Server: Apache-Coyote/1.1

Accept-Ranges:bytes

Content-Type-text/html

Content-Lenght: 27

Date:Mon,24,Apr 2015 01:01:01 GMT


你可能感兴趣的:(url,TCP/IP,UDP,web资源访问原理)