一、 计算机网络的体系结构
计算机网络是一个非常复杂的系统,将整个网络的传输功能进行分层设计的网络结构层次模型及各层协议的集合称为计算机网络的体系结构。为了解决异构互 联及通信问题, 20世纪 70 年代后期国际标准化组织( ISO )制定了 OSI ( Open System Interconnect )开放式系统互联参考模型。该模型采用了三级抽象,即体系结构、服务定义和协议规格说明,是一种标准化的理论参考模型。
二、 TCP/IP协议模型
TCP/IP ,全称为 Transfer Controln Protocol/Internet Protocol ,即传输控制 / 网际协议,它并不单只 TCP 和 IP 这两个协议,而是用于计算机通信的一组协议,我们通常称之为 TCP/IP 协议族。
TCP/IP 是四层的体系结构:应用层、运输层、网际层和网络接口层。但最下面的网络接口层并没有具体内容。因此往往采取折中的办法,即综合 OSI 和 TCP/IP 的优点,采用一种只有五层协议的体系结构,如图
2.1 物理层( Physical Layer )
物理层把比特流传送到物理媒体。电气信号(或光信号)在物理媒体中传播,比特流从发送端物理层传送到接收端物理层。物理层接收到比特流,上交给数据链路层。主机的网卡、 RJ45 以太网接口、网线等硬件设备均属于物理层范畴。
2.2 数据链路层( Data Link Layer )
数据链路层也称为网络接口层,它的功能是将网络层提交的数据报( IP Datagram )封装成(以太网)帧后提交给物理层,或从物理链路上接收到的数据帧中萃取数据报提交给网络层。
对于一个给定的(物理)连接来说,链路层协议主要实现在网络适配器中,即我们常说的网卡( NIC , Network Interface Card )。传输节点的网络层把 IP 数据报传递到适配器,由适配器将此数据报封装到链路层的帧中,然后把这个帧传输到物理层通信链路。
现在一般都是以太网卡,上面跑的是以太网驱动。 DSL 通信中的 PPPoE 即 Point to Point Protocol over Ethernet ,其层级同网络层。
2.3 网络层( Network Layer )
Internet 的网络层通过一系列的路由器在源地址和目的地址之间传输数据包,它依赖于底层链路层的服务。由于该层的主要协议是 IP 协议, 因而也可简称为 IP 层。它是TCP/IP 协议栈中最重要的一层,主要功能是可以把源主机上的分片( Fragment )发送到互联网中的任何一台 目标主机上。
网络层包含了子网操作,它是懂得网络拓扑结构(网络中机器的物理配置,带宽的限制等)的最高层,也是内网通信的最高层。涉及到 ARP 协议, ICMP 协议, RIP 、 OSPF 、BGP 等路由协议和路由器设备。
2.4 传输层( Transport Layer )
我们通常所说的两台主机之间的通信其实是两台主机上对应应用程序之间的通信,传输层提供的就是应用程序之间的通信,也叫端到端( host-to- host end-to-end )的通信。在 TCP/IP 协议族中传输层包含点对点( Peer to Peer )的传输协议:一个是 TCP (传输控制协议);另一个是 UDP (用户数据报协议)。
TCP 是一个可靠的面向连接的协议,它允许源于一个机器的字节流( byte stream )被无错误地传输到 Internet 上的任何机器。 UDP 是一个不可靠无连接的协议,它是为那些不需要 TCP 的序列号管理和流 控制而想自己提供这些功能的应用程序设计的。
2.5 应用层( Application Layer )
应用层是指建立在传输层之上,直接面向用户,向用户提供特定的、常用的应用程序。如远程登录服务( tcp/telnet )、超文本传输协议 ( tcp/http )、文件传输协议(tcp/ftp )、实时流媒体协议( tcp/rtsp );动态主机设置协议( udp/dhcp )、简 单文件传输协议( udp/tftp )、实时传输协议( udp/rtp )等。
鉴于 TCP 和 UDP 协议各自的特性,有些应用综合使用两种协议。例如 DNS 在某些情况下使用 TCP (发送和接收域名数据库),但使 用 UDP 传送有关单个主机的信息;RTSP/RTP/RTCP 使用 TCP 实现流点播控制,使用 UDP 实现数据传输及控制。
三、 HTTP、TCP、UDP三者之间的关系
都是通信协议,也就是通信时所遵守的规则,只有双方按照这个规则“说话”,对方才能理解或为之服务。
TCP/IP是个协议组,可分为四个层次:网络接口层、网络层、传输层和应用层。
在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。
在传输层中有TCP协议与UDP协议。
在应用层有FTP、HTTP、TELNET、SMTP、DNS等协议。
因此,HTTP本身就是一个协议,是从Web服务器传输超文本到本地浏览器的传送协议。
socket:
这是为了实现以上的通信过程而建立成来的通信管道,其真实的代表是客户端和服务器端的一个通信进程,双方进程通过socket进行通信,而通信的规则采用指定的协议。socket只是一种连接模式,不是协议,tcp、udp,简单的说(虽然不准确)是两个最基本的协议,很多其它协议都是基于这两个协议如,http就是基于tcp的,.用socket可以创建tcp连接,也可以创建udp连接,这意味着,用socket可以创建任何协议的连接,因为其它协议都是基于此的。
URL:
URL(Uniform Resource Locator) 地址用于描述一个网络上的资源,
URL 的一个例子
http://www.mywebsite.com/sj/test/test.aspx?name=sviergn&x=true#stuff
Get和Post
Http协议定义了很多与服务器交互的方法,最基本的有4种,分别是GET,POST,PUT,DELETE. 一个URL地址用于描述一个网络上的资源,而HTTP中的GET, POST, PUT, DELETE就对应着对这个资源的查,改,增,删4个操作。 我们最常见的就是GET和POST了。GET一般用于获取/查询资源信息,而POST一般用于更新资源信息.
GET和POST的区别
1. GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的数据放在HTTP包的Body中.
2. GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.
3. GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值,也就是说Get是通过地址栏来传值,而Post是通过提交表单来传值。
4. GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码.