计算机网络的一点点点笔记(TCP,UDP,DNS,HTTP,URL,应用层)

以下内容基本全部l来自谢希仁编著《计算机网络》(第七版)

(1)计算机网络体系结构

协议:为进行网络中的数据交换而建立的规则,标准或约定成为网络协议,简称为协议;

协议有三个要素构成:语法,即数据与控制信息的结构或格式;语义,即需要发出何种控制信息,完成何种动作以及做出何种响应;同步,及事件实现顺序的详细说明。

  • OSI/RM 开放系统互联基本参考模型,OSI的七层协议;
  • TCP/IP的体系结构;四层协议;
  • 五层协议的体系结构;五层协议;
OSI的七层协议 TCP/IP的四层协议 五层协议
7应用层 应用层(各种应用层协议如TELNET,FTP,SMTP等) 5应用层
6表示层
5会话层
4运输层 运输层(TCP/UDP) 4运输层
3网络层 网际层IP 3网络层
2数据链路层 网络接口层 2数据链路层
1物理层 1物理层
  1. 应用层:任务是 通过应用进程间的交互来完成特定网络应用。应用层协议定义的是 应用进程间的通信和交互的规则(例如域名系统DNS,支持万维网应用的HTTP协议,支持电子邮件的SMTP协议等等)。应用层交互的数据单元成为报文
  2. 运输层:任务是 负责向两台主机中进程之间的通信提供通用(多种应用都可使用)的数据传输服务。运输层主要使用的协议是TCP和UDP协议
  3. 网络层:负责为分组交换网上的不同主机提供通信服务。在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组或包进行传送。在TCP/IP体系中,由于网络层使用IP协议,因此分组也叫做IP数据报
  4. 数据链路层:将网络层交下来的IP数据报组装成帧,并且在接收数据时还要由数据链路层来检错,纠错。
  5. 物理层:传输的数据单位是比特

(2)IP,TCP,UDP

  • 许多计算机网络通过路由器进行互联,参加互联的计算机网络都使用网际协议IP,一次可以把互联之后的计算机网络看成一个虚拟互联网络。所谓虚拟互联网络也就是逻辑互联网络,它的意思是互连起来的各种物理网络的异构性本来是客观存在的,但是我们利用IP协议就可以使这些性能各异的网站在网络层上看起来好像是一个统一的网络。这样的网络简称IP网,如果在这种IP网的上层使用TCP协议,就成了互联网。整个互联网是一个单一的,抽象的网络。IP地址就是给互联网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32位标识符,是网络层和以上各层使用的地址,是一种逻辑地址
  • 虽然IP数据报的首部明确的标志了两台通信的主机的IP地址,但是真正通信的实体是主机中的进程,然而IP协议只能把分组送到目的主机,但是这个分组还在网络层并没有真的交付到主机中的应用进程。所以,从运输层的角度来看,通信的真正端点不是主机而是主机中的进程,也就是说,应用进程之间的通信是端到端的通信
  • 在网络层中,IP数据报首部中的检验和字段,只检验首部是否出现差错而不检查数据部分,所以运输层还要对收到的报文进行差错检测。所以根据应用程序的不同需求,运输层需要有两种不同的运输协议,即面向连接的TCP和面向无连接的UDP。为了识别主机中的进程,运输层使用了协议端口号,简称端口。只要把所传送的报文交到目的主机的某个合适的目的端口,剩下的工作(即最后交付目的进程)就交给TCP/UDP来完成。
  • 用户数据报协议UDP——提供无连接的,尽最大努力的数据传输服务(不保证数据传输的可靠性),其数据传输的单位是用户数据报。主要特点是:
  1. UDP是无连接的。
  2. UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表。
  3. UDP是面向报文的。
  4. UDP没有拥塞控制。
  5. UDP支持一对一,一对多,多对一,多对多的交互通信。
  6. UDP的首部开销小。
  • 传输控制协议TCP——提供面向连接的,可靠的数据传输服务,其数据传输的单位是报文段。主要特点有:
  1. TCP是面向连接的运输层协议。
  2. 每一条TCP连接只能由两个端点,每一条TCP连接只能是点对点的(一对一)。
  3. TCP提供可靠交付的服务。
  4. TCP提供双全工通信。
  5. 面向字节流。
  • TCP建立连接的过程叫做握手,握手需要在客户和服务器之间交换三个TCP报文段。三报文握手建立TCP连接的过程,四报文握手释放TCP连接的过程。

(3)网络层总结

域名系统DNS

  • 域名系统DNS:主机的IP地址不便于用户记忆,所以采用层次树状结构的命名方式,并使用分布式的域名系统DNS。
  • 域名到IP地址的解析是由分布在互联网上的许多域名服务器程序(可简称为域名服务器)共同完成的。域名服务器程序在专设的节点上运行,运行域名服务器程序的机器叫做域名服务器
  • 域名到IP的解析过程:当某一个应用进程需要把主机名解析为IP地址时,该应用进程就调到解析程序,并成为DNS的一个客户,把待解析的域名放在DNS请求报文中,以UDP用户数据报的方式发给本地域名服务器。本地域名服务器在查找域名后,把对应的IP地址放在回答报文中返回。应用进程获得目的主机的IP地址后即可进行通信。
  • 域名结构:任何一个连接在互联网的主机或路由器,都有一个唯一的层次结构的名字,即域名。"域"是名字空间中一个可被管理的划分。域还可以划分为子域,而子域还可以继续划分为子域的子域,这样就形成了顶级域,二级域,三级域,等等。DNS规定,域名中的标号都由英文字母和数字组成,每一个标号不超过63个字符(为了便于记忆,最好不超过12个字符),也不区分大小写字母。标号中除了连字符-外不能使用其他的标点符号。级别最低的域名写在最左边,而级别最高的顶级域名则写在最右边。有多个标号组成的完整域名总共不超过255个字符。
  • DNS各级域名由上一级的域名管理机构管理,而最高的顶级域名则由ICANN进行管理。域名只是一个逻辑概念,并不代表计算机的物理地点。
  • 我国把二级域名划分为“类别域名”和“行政区域名”两大类,“类别域名”共7个,分别为:ac(科研机构),com(工,商,金融等企业),gov(中国的政府机构),mil(中国的国防机构),net(提供互联网络服务的机构),org(非营利的组织);“行政区域名”共34个,适用于我国的各省,自治区,直辖市。例如:bj(北京市),js(江苏省),等等。
  • 域名服务器:一个服务器所负责管辖的(或有权限的)范围叫做区(区可能小于或等于域,但一定不大于域)。每一个区设置相应的权限域名服务器,用来保存该区中所有主机的域名到IP地址的映射
  • 域名服务器有四种类型:根域名服务器,顶级域名服务器,权限域名服务器,本地域名服务器(有时也叫默认域名服务器)。

 万维网WWW

  • 万维网是一个大规模的,联机式的信息储藏所,简称Web。万维网是一个分布式的超媒体系统,它是超文本系统的扩充,超文本是指包含指向其他文档的链接的文本。万维网以客户服务器方式工作,浏览器就是在用户主机上的万维网客户程序。万维网所驻留的主机则运行服务器程序,因此这台主机也成为万维网服务器。客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档。
  • 为了能够标志互联网上的万维网文档,万维网使用统一资源定位符(URL)来标志,并使每一个文档在整个互联网的范围内具有唯一的标识符URL。
  • 为了实现万维网上的各种连接采用了超文本传送协议HTTP。HTTP是应用层的协议,它使用TCP连接进行可靠的传送。
  • 统一资源定位符URL:用来表示从互联网上得到的资源位置和访问这些资源的方法。URL给资源的位置提供了一种抽象的识别方法,并用这种方式给资源定位。只要能够对资源定位,系统就可以对资源进行各种操作,如存取,更新,替换和查找其属性。URL相当于一个文件名在网络范围的扩展。因此,URL是与互联网相连的机器上的任何可访问对象的一个指针,由于访问对象所使用的协议不同,所以URL还指出读取某个对象时所使用的协议。URL的一般心事有以下四个部分组成:

                                         <协议>://<主机>:<端口>/<路径>

  • URL的第一部分是最左边的协议,这里的协议指出是用什么协议来获取该万维网文档。现在最常用的协议就是http,其次是ftp(文件传输协议)。"://”是规定的格式。<主机>指的是主机的域名。<端口>和<路径>有时可以省略
  • 超文本传输协议HTTP:HTTP是面向事务的应用层协议。它不仅传送完成超文本跳转所必须的信息,而且也传送任何可从互联网上得到的信息
  • 万维网的大致工作过程:每个万维网网点都有一个服务器进程,它不断的监听TCP的端口80,以便发现是否有浏览器向它发出连接建立请求。一旦监听到连接建立请求并建立TCP连接之后,浏览器就向万维网服务器发出浏览器某个页面的请求,服务器接着就返回所请求的页面作为响应。最后TCP连接就被释放了。
  • HTTP报文通常都使用TCP连接传达,保证数据的可靠传输。HTTP不必考虑数据在传输过成中被丢弃后又怎样被重传。但是HTTP协议本身是无连接的。这就是说,虽然HTTP使用了TCP连接,但是通信的双方在交换HTTP报文之前不需要先建立HTTP连接
  • HTTP连接是无状态的,也就是说,同一个客户第二次访问同一个服务器上的页面时,服务器的响应与第一次的响应相同,因为服务器不记得曾经访问过这个客户,也不记得为这个客户曾经服务过多少次。HTTP的无状态简化了服务器的设计,使服务器更容易支持大量并发的HTTP请求
  • 当用户点击某个万维网连接时,HTTP协议首先要和服务器通过三报文握手建立TCP连接。当建立连接的三报文握手的前两部分完成后,万维网客户就把HTTP请求报文,作为建立TCP连接的三报文握手中的第三个报文中的数据,发送给万维网服务器。服务器收到HTTP请求报文后,就把所请求的文档作为响应的报文返回给客户。
  • HTTP/1.0的主要缺点就是每请求一个文档就要有两倍RTT的开销,万维网客户每一次建立新的TCP连接都要重新分配缓存和变量,当万维网服务器同时服务于大量客户的请求时,这种非持续连接会使万维网服务器负担很重,要使用并行TCP连接可以缩短响应时间。而HTTP/1.1 协议使用了持续连接万维网服务器在发送响应后的一段时间内保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的HTTP请求报文和响应报文
  • HTTP/1.1协议的持续连接有两种工作方式:非流水线方式和流水线方式,非流水线方式:客户在收到前一个响应后才能发出下一个请求;流水线方式:客户收到HTTP的响应报文之前就能够接着发送新的请求报文。流水线工作方式时TCP连接中的空闲时间减少,提高了下载文档效率。
  • HTTP有两类报文:请求报文和响应报文。请求报文——从客户向服务器发送请求报文。响应报文——从服务器到客户的回答。两种报文都由三部分组成:开始行,首部行,实体主体。两类报文区别是开始行不同。
  • HTTP的报文结构图:略~
  1. 开始行:用于区分是请求报文还是响应报文。在请求报文中开始行叫请求行,响应报文中开始行叫做状态行。
  2. 首部行:用来说明浏览器,服务器或报文主体的一些信息,首部有好几行,也可以不使用
  3. 实体主体:在请求报文中一般都不用这个字段,而在响应报文中也可能没有
  • HTTP请求报文的特点:请求行只有三个内容:即方法,请求资源的URL,HTTP的版本
方法(操作) 意义
OPTION 请求一些选项的信息
GET 请求读取有URL所标志的信息
HEAD 请求读取有URL所标志的信息的首部
POST 给服务器添加信息(例如:注释)
PUT 在指明的URL下存储一个文档
DELETE 删除指明的URL所标志的资源
TRACE 用来进行环回测试的请求报文
CONNECT 用于代理服务器
  • HTTP响应报文的特点:状态行的三个内容:即HTTP的版本,状态码,以及解释状态码的简单短语
  • 状态码都是三位数字的,分五大类:
  1. 1XX 表示通知信息,如请求收到了或正在处理。
  2. 2XX 表示成功,如接受或知道了。
  3. 3XX 表示重定向,如要完成请求还必须采取进一步的行动。
  4. 4XX 表示客户的差错,如请求中有错误的语法或不能完成。
  5. 5XX 表示服务器的差错,如服务器失效无法完成请求。
  6. 常见的 202:接受;400:错误的请求;404:找不到:
  • Cookie:HTTP是无状态的,虽然简化了服务器的设计,但有些万维网站点需要识别用户。所以在HTTP中使用Cookie。Cookie表示在HTTP服务器和客户之间的传递信息。
  • Cookie工作方式:当用户A浏览某个使用Cookie的网站时,该网站的服务器就为A产生一个唯一的识别码,并以此作为索引在服务器的后端数据库中产生一个项目。接着在A的HTTP响应报文中添加一个叫做Set-cookie的首部行“首部字段名”是“Set-cookie”,后面的”值“就是赋予该用户的识别码。当A收到这个响应时,其浏览器就在他管理的特定的Cookie文件中添加一行,其中包括这个服务器的主机名和Set-cookie后面给出的识别码。当A继续浏览这个网站时,每发送一个HTTP请求报文,其浏览器就会从其Cookie文件中取出这个网站的识别码,并放到HTTP请求报文Cookie首部行中:Cookie:xxxxxxx;于是,这个网站就能够跟踪用户在该网站的活动,而服务器并不需要知道这个用户的真实姓名和其他信息,但可以知道用户什么时间访问哪些页面,以及访问顺序。

 

 

 

 

 

 

 

你可能感兴趣的:(计算机网络)