概述
阅读《java网络编程》等诸多资料个人所思所想读书笔记
1.网络
因特网
两种方式回答问题:其一是描述因特网的基本构成即构成因特网的基本硬件和软件组件,其二根据分布式应用提供服务的联网基础设施描述因特网。
因特网是世界范围的计算机网络,即是一个互联了遍及全世界所有计算设备的网络。
主机
**所有的计算设备(手机电脑汽车电器等等)称为主机(host)或端系统(end system)。**端系统通过通信链路(communication link)和分组交换机(packet switch)连接到一起。**每个主机都有地址(address)**是唯一标识节点的一个字节序列。每个地址的字节越多,可以用的地址就越多,就有更多设备可以同时连到网络。
不同的网络以不同的方式分配地址(因为以太网和物理以太网硬件关联,不同的厂家制作硬件编码时候利用的地址也不一样)但是一个组织允许选择 地址有ISP(internet服务供应商)提供,而全球所有的地址最终由美国Internet号码注册中心规范。
通信链路
通信链路是有不同类型的物理媒体组成,包括同轴电缆铜线光纤和无线电频谱。不同的链路以不同的速率传输数据,链路的传输速率是以比特/秒度里bit/s衡量。数据位转化为电磁波,通过电缆移动,不过现在许多长距离的传输会用玻璃纤维发送可见光纤电缆来完成。
分组和分组交换机
当一台端系统向另一台端系统发送数据时候,发送端系统将数据分段,并为每段加上首部字节。由此形成的信息包成为分组/包(packet)。分组通过网络发送到目的端系统进而被装配成为初始数据。流经网络的数据被分割为数小块,每个分组都被单独处理
**分组交换机从它一条入通信链路接受到达的分组,并从一条通信链路转发改分组。**当今最显著的两种分组机是路由器(router)和链路层交换机(link-layer switch)。两种类型的交换机朝最终目的地转发分组。链接层交换机通常用于接入网中,而路由器通常用于网络核心中。从发送端系统到接受段系统,一个分组所经历的一系列通信链路和分组交换机成为通过该网络的路径(route或path)。因特网所承载的精确通信量是难以估算的。
通信链路类似于高速公路而分组交换机类似于立交桥。
ISP
端系统通过因特网服务提供商(ISP internet service provider)接入互联网,包括本地电缆或电话公司的住宅区ISP、大学的ISP、公司的ISP及其机场等公共场所的WIFI接入ISP。每个ISP都是由多个分组交换机和多短通信链路。各个ISP为端系统提供各种不同类型的网络接入,包括线缆调制解调器或DSL的住宅宽带接入、告诉局域网接入、无线接入和56kps拨号调制器接入。ISP为内容提供者提供因特网接入服务,将web站点直接接入因特网。
因特网就是端系统的彼此互联,因此为端系统接入的 ISP也需要互联。
低层的ISP通过国家的国际的高层ISP进行互联。高层ISP通过告诉光纤链路互联的告诉路由器组成。高层和低层的ISP网络都是相互独立管理的,运行IP协议,遵守一定命令和地址习惯。统一的协议实现统一的共识,从而实现创造协同工作的系统和产品。
2.网络分层
为应对程序开发人员和最终用户隐藏的复杂性,网络通信在不同方面被分解为多个层。第一层是物理硬件和说传输信息之间的抽象层次。往后每一层都和其上下的层对话。层和层之间的接口保持不变,就不会影响到其他层。分层实现应用协议和网络硬件之间的解耦合。
传输层只在应用层和网际层对话,网际层只在主机网络层和传输层对话(不直接对话应用层)
TCP/IP网络模型
链路层:链路层是用于定义物理传输通道,通常是对某些网络连接设备的驱动协议,例如针对光纤、网线提供的驱动。
网络层:网络层是整个TCP/IP协议的核心,它主要用于将传输的数据进行分组,将分组数据发送到目标计算机或者网络。
传输层:主要使网络程序进行通信,在进行网络通信时,可以采用TCP协议,也可以采用UDP协议。
应用层:主要负责应用程序的协议,例如HTTP协议、FTP协议等。
主机网络层
在基于IP的Internet(java唯一真正理解的网络)的标准参考模型中,网络中 隐藏的部分属于主机网络层(host-to-work layer也成为链路层、数据链路程、网络接口层)。主机网络层定义一个特定的网络接口 (如网卡或者wifi天线)通过物理链接向本地网络或世界其他地方发送IP数据报。
主机网络层中,由链接不同的计算机的硬件组成的部分成为网络的物理层。但是对于java开发者不需要考虑。
网际层
网络的下一层 (java开发者需要考虑的第一层),网际层(internet layer)(在OSI模型中称之为网络层network layer)。*网际层的协议定义数据位和字节图和组织为更大的分组,同时也定义寻找地址机制,使得不同计算机之间相互关联和对话。IP协议是世界上最广泛的网际层协议。
在TCP/IP协议中,这个标识号就是IP地址,它可以唯一标识一台计算机。**目前,IP地址广泛使用的版本是IPv4(四个十进制形式的数字段来表示0~255),它是由4个字节大小的二进制数来表示,如00001010000000000000000000000001。由于二进制形式表示的IP地址非常不便记忆和处理,因此通常会将IP地址写成十进制的形式,每个字节用一个十进制数字(0-255)表示,数字间用符号“.”分开,如 “192.168.1.100”。
随着计算机网络规模的不断扩大,对IP地址的需求也越来越多,IPV4这种用4个字节表示的IP地址面临枯竭,因此IPv6 便应运而生了,IPv6使用16个字节表示IP地址,它所拥有的地址容量约是IPv4的8×1028倍,达到2128个(算上全零的),这样就解决了网络地址资源数量不够的问题。
**通过IP地址可以连接到指定计算机,但如果想访问目标计算机中的某个应用程序,还需要指定端口号。**在计算机中,不同的应用程序是通过端口号区分的。端口号是用两个字节(16位的二进制数)表示的,它的取值范围是065535,其中,01023之间的端口号用于操作系统内部的网络服务和应用,用户的普通应用程序需要使用1024以上的端口号,从而避免端口号被另外一个应用或服务所占用。
传输层
在传输数据的时候,问题多多。比如一些数据传输的时候缺失,首部校验只可以检测首部被破坏情况;传输到达目的地的数据也不一定可以按顺序到达。
**因此传输层(transport layer)需要负责确保分组发送按照顺序被接受,并且没有数据的丢失或被破坏。**比如分组丢失,传输层就会要求发送发重新发送,为实现这个目标就在IP网路每个数据报前加一个 附加首部。
传输层的两个重要的高级协议,分别是UDP和TCP,其中UDP是User Datagram Protocol的简称,称为用户数据报协议,TCP是Transmission Control Protocol的简称,称为传输控制协议。
UDP是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接。简单来说,当一台计算机向另外一台计算机发送数据时,发送端不会确认接收端是否存在,就会发出数据,同样接收端在收到数据时,也不会向发送端反馈是否收到数据。(传但不保证收到与否,接受端要求一定在线)由于使用UDP协议消耗资源小,通信效率高,所以通常都会用于音频、视频和普通数据的传输例如视频会议都使用UDP协议,因为这种情况即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。(比如视频偶尔卡但是不会对整体内容影响)
**但是在使用UDP协议传送数据时,由于UDP的面向无连接性,不能保证数据的完整性,因此在传输重要数据时不建议使用UDP协议。**传输数据量大于64kb不可以发送。(比如微信、qq文件大小限制)
TCP协议是面向连接的通信协议,即在传输数据前先在发送端和接收端建立逻辑连接,然后再传输数据,它提供了两台计算机之间可靠无差错的数据传输。在TCP连接中必须要明确客户端与服务器端,由客户端向服务端发出连接请求,每次连接的创建都需要经过“三次握手”。第一次握手,客户端向服务器端发出连接请求,等待服务器确认,第二次握手,服务器端向客户端回送一个响应,通知客户端收到了连接请求,第三次握手,客户端再次向服务器端发送确认信息,确认连接。整个交互过程如下图所示。
由于TCP协议的面向连接特性,它可以保证传输数据的安全性,适合大数据传输,所以是一个被广泛采用的协议,例如采用TCP协议传输文件,在下载文件时,如果数据接收不完整,将会导致文件数据丢失而不能被打开。
应用层
向用户传输数据的层叫做应用层(application layer)。它下面的三层共同定义数据如何从一台计算机传输到另一台计算机。应用层确定数据传输后的操作。应用层的协议多样,如用于web的HTTP,电子邮件的SMTPPOPMAP,文件传输的FTPFDPTFTP,文件访问的NFS,文件共享的GnutellaBitTorrent,语音会话启动协议SIP等等。
最后
以上就是迷人短靴为你收集整理的java网络编程01——网络基本概念的全部内容,希望文章能够帮你解决java网络编程01——网络基本概念所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复