第一章java网络编程入门

时间:2022-12-15 16:33:59

计算机网络的任务就是传输数据

进程是指运行中的程序,进程的任务就是执行程序中的代码。

网络中的每台机器成为节点(node).大多数的节点是计算机,此外,打印机,路由器,网桥,网关和哑终端都是节点。

人与人直接通过某种语言来交流,网络中的主机之间也通过“语言”来交流,这种语言成为网络协议,这是对网络协议的通俗的解释。

网络中的每台主机都有地址,它是用于标示主机的一个字节序列。

 

Internet提供的服务包括www服务,电子邮件,文件传输(ftp),远程登录(Telnet)服务等。

上海人讲上海人的方言,广东人讲广东人的方言,上海人与广东人通过普通话交流。与此相似,不同网络之间的互联网通过网络上的标准语言--TCP/IP协议

 

OSI参考模型

国际标准化组织(ISO)的一种用于开发系统互联(OSI, Open System Interconnection)的体系结构.它为各种异构系统互联提供了概念性的框架。

OSI参考模型把网络分为7层,每一层使用下层提供的服务,同时为上层提供服务。

 

1,物理层,传输信息离不开物理介质,如双绞线和同轴电缆。物理层的任务就是为它的上一次提供物理连接,以及规定通行节点之间的机械和电器等特征。在这一层,数据作为原始的比特流(bit)传输。典型的设备包括集线器(Hub)

 

2,数据链路层, 数据链路层负责两个相邻的节点间的线路上,无差错的传送以为单位的数据。每一帧包括一定量的数据和一些必要的控制信息。在传送数据时,如果接收方检测到所传的数据中有差错,就要通知发送方重新发送这一帧。本层的典型的设备是Switch(交换机)。

 

3,网络层,在计算机网络中两台计算机之间可能会经过很多的数据链路,也可能通过很多的通信子网,网络层的任务就是选择合适的网间路由和交换节点,确保数据及时传送到目标主机。网络层将数据链路层提供的帧组成数据包,包中封装了网络层的包头,包头中含有逻辑地址信息--源主机和目标主机的网络地址,本层的典型的设备就是路由器(Router)

 

4,传输层,该层的任务是通过通信子网的特性最佳地利用网络资源,为两个端系统(也就是源主机和目标主机)的会话层提供建立,维护和取消传输的连接的功能,以可靠的方式或不可靠的方式。该层的信息传送的单位是报文

 

5,会话层,在会话层及以上层次中,数据传送的单位不再另外命名,统称为报文,会话层管理进程之间的会话过程,即负责建立,管理,终止进程之间的会话。会话层还通过数据中插入校验点来实现数据的同步。

 

6,表示层,表示层对上层的数据进行转换,以保证一个主机的应用层的数据可以被另一个主机的应用层理解。表示层的数据转换包括对数据的加密,解密,压缩,解压和格式转换等

 

7,应用层, 应用层确定进程之间通信的实际用途,以满足用户的实际请求。浏览Web站点,收发E-mail,上传或下载文件。

 

对等层之间相互通信需要遵守一定的规则,如通信的内容和通信的方式,这种规则成为网络协议(Protocol)。

 

 

 

TCP/IP参考模型和TCP/IP协议

TCP/IP参考模型和OSI参考模型的对比示意图。第一章java网络编程入门

 

TCP/IP参考模型分为四个层次:应用层、传输层、网络互连层和主机到网络层第一章java网络编程入门


 

 1、主机到网络层,实际上TCP/IP参考模型没有真正描述这一层的实现,只是要求能够提供给其上层-网络互连层一个访问接口,以便在其上传递IP分组。由于这一层次未被定义,所以其具体的实现方法将随着网络类型的不同而不同。
  
 2、网络互联层,网络互连层是整个TCP/IP协议栈的核心。它的功能是把分组发往目标网络或主机。同时,为了尽快地发送分组,IP协议把原始的数据包分为多个数据包,然后沿不同的路径同时进行分组传递。因此,分组到达的顺序和发送的顺序可能不同,这就需要上层必须对分组进行排序。  
  网络互连层定义了分组格式和协议,即IP协议(Internet Protocol)。  
  网络互连层除了需要完成路由的功能外,也可以完成将不同类型的网络(异构网)互连的任务,不同的拓扑结构的网络都向网络互联层提供了统一的访问接口,访问接口向网络互联层隐藏了下层网络的差异。除此之外,网络互连层还需要完成拥塞控制的功能。
  
 3、传输层,在TCP/IP模型中,传输层的功能是使源端主机和目标端主机上的对等实体可以进行会话。在传输层定义了两种服务质量不同的协议。即:传输控制协议TCP(transmission control protocol)和用户数据报协议UDP(user datagram protocol)。  
  TCP协议是一个面向连接的、可靠的协议。它将一台主机发出的字节流无差错地发往互联网上的其他主机。在发送端,它负责把上层传送下来的字节流分成报文段并传递给下层。在接收端,它负责把收到的报文进行重组后递交给上层。TCP协议还要处理端到端的流量控制,以避免缓慢接收的接收方没有足够的缓冲区接收发送方发送的大量数据。  
  UDP协议是一个不可靠的、无连接协议,主要适用于不需要对报文进行排序和流量控制的场合。
  
 4、应用层,TCP/IP模型将OSI参考模型中的会话层和表示层的功能合并到应用层实现。  
  应用层面向不同的网络应用引入了不同的应用层协议。其中,有基于TCP协议的,如文件传输协议(File Transfer Protocol,FTP)、虚拟终端协议(TELNET)、超文本链接协议(Hyper Text Transfer Protocol,HTTP),也有基于UDP协议的,如简单网络管理协议(Simple Network Management Protocol, SNMP),域名系统协议(Domain Name System,DNS)。

 

IP协议

IP网络(即在网络层采用IP协议的网络)中每台主机都有唯一的IP地址,IP地址用于标示网络中的每个主机。

IP地址由两部分组成,:IP网址和IP主机地址。(IP地址为192.168.3.4,子网掩码为255.255.0.0的IP网址为192.168.0.0)。

 

  子网划分,一个公司能拥有一个网址和多个主机,如果网址为192.166.0.0。为了更好的管理网络,提高安全性和网络性能,可以把网络划分为若干个子网,子网的地址可以为,192.166.1.0和192.166.2.0等,这些子网的掩码都是255.255.255.0.

 

  发送数据包的过程,IP网络上的主机只能直接向本地网络的其他主机发送数据包,主机实际上有两个不同的地址:物理地址和IP地址,物理地址是主机上网卡来标识的,物理地址才是主机的真实地址。当主机A向主机B发送包时,会通过地址解析协议ARP获得对方的物理地址,然后把包发送给对方。(ARP欺骗,http://baike.baidu.com/view/155386.htm

 

TCP协议端口

  在客户端,每一个TCP连接都会分配一个端口,端口不是物理设备,而是用于标示进程的逻辑地址,更确切的说,是用于标示TCP连接的端点的逻辑地址。

TCP和UDP都用端口来标识进程,在一个主机中,两者是相互独立的,即Tcp端口和Udp端口可能相同。

 

 

java网络编程的致力于实现应用层。传输层向应用层提供了套接字的Socket接口,Socket封装了下层的数据传输的细节。

 

参考文档,孙老师的书以及http://cisco.chinaitlab.com/TCP/35485.html