TCP/IP 协议 4.3

网友对哈士奇的评价:

 一哈顶三虎,三哈沉航母,五哈斗上帝,十哈创世纪,百哈毁灭银河系,千哈霸宇宙第。社会我哈哥,狗怂话还多,吵架没输过,打架没赢过,指令听不懂,拆家不用说
***************************************************************************************************************************

一.TCP/IP协议

  1.TCP/IP协议是Internet最基本的协议,主要由传输层的TCP协议网络层的IP协议构成,TCP(Transmisson Control       Protocol,传输控   制协议)保证被传输数据的完整性;IP(Internet Protocol,网际互联协议)负责将信息从一个地方传送到另一个地方。

 2.TCP/IP协议族包括很多协议:TCP/IP协议和相关的其他子协议共同组成的一个集合。

   TCP/IP 协议 4.3

   计算机网络知识点的回顾可以按照上图。

TCP/IP 协议 4.3

  3.应用层协议:

   (1)文件传输类:HTTP、FTP、TFTP;

      <1>HTTP (超文本传送协议,hypertext transfer protocol):超文本文档从一台主机(Web服务器)传输到另一台主机(浏览器)的       应用层协议,以实现超链接的功能。

      超文本包含有超链接(Link)和各种多媒体元素标记(Markup)的文本。 

      URL即统一资源定位符(Uniform Resource Locator),用来唯一地标识万维网中的某一个文档。URL由协议、主机和端口(默    认为80)以及文件名三部分构成。如:

      TCP/IP 协议 4.3

     HTTP的工作原理:用户点击URL(浏览器分析域名,浏览器请求DNS解析域名为IP地址,DNS将IP地址返回给浏览器)-->浏览器与服务器建立tcp连接-->浏览器请求数据-->服务器将数据返回给浏览器-->断开tcp连接。

    其中建立的tcp连接有非持久性的连接、持久性的连接、无状态的连接(不记忆之前是否连接)。

    请求报文:从客户端(浏览器)向服务器发送的请求报文。

  TCP/IP 协议 4.3

      关于报文的具体解释:方法、首部字段或消息头、报文结构

      方法:对操作对象的命令

      TCP/IP 协议 4.3

       首部字段或消息头:

        TCP/IP 协议 4.3

       根据HTTP的工作原理:如果每次客户端请求数据都要从源服务器获取,这样既增加了源服务器的负担,同时不利于快速传输数据。因此如果能够将用户之前请求的数据暂存,用户再次请求数据时,暂存的数据可以直接获取,不用再次请求源服务器,这就提出了HTTP代理服务器的概念,代理服务器请求源服务器数据,暂存数据,客户端(浏览器)可以直接从代理服务器获取已暂存的数据。

      <2> FTP文件传输协议,File Transfer Protocol

        FTP是基于TCP的文件传输协议,FTP主要功能是减小或消除在不同系统下处理文件的不兼容性。
        FTP服务器有两大部分组成:一个主进程,负责接受新的请求;还有若干从属进程,负责处理单个请求。
        FTP服务文件传输的过程中始终连接。客户端从21号端口请求服务器的数据,服务器端从20号端口传送数据到客户端,FTP使用两个不同的端口。

        FTP可以传送4种文件:ASCII码文件、EBCDIC码文件、图像(Image)文件、本地文件(Local)

        FTP有两种工作模式:主动模式(PORT)和被动模式(PASV)

        主动模式:

        TCP/IP 协议 4.3

     被动模式(PASV):用户主机前端多了一道防火墙(客户机使用地址转换接入互联网)

     首先用户使用随机端口连接FTPSERVERTCP21端口进行协商;
     FTPSERVER告诉客户机:我的XXXX端口开放了,你连过来吧;
     客户机使用一个随机端口连接FTPSERVERXXXX端口传输数据。
    TCP/IP 协议 4.3
      <3>TFTP(简单文件传输协议)也是采用客户机/服务器模式的文件传输协议
             TFTP适用于客户端和服务器之间不需要复杂交互的环境
             TFTP承载在UDP之上,端口号69
             TFTP仅提供简单的文件传输功能(上传、下载)
             TFTP没有存取授权与认证机制,不提供目录列表功能
             TFTP协议传输是由客户端发起的
            TCP/IP 协议 4.3

   (2)远程登录类:Telnet:

      Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。

      它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。
      终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样,可以在本      地就能控制服务器。
      要开始一个telnet会话,必须输入用户名和密码来登录服务器。Telnet是常用的远程控制Web服务器的方法。
      Telnet的具体连接,可以直接使用远程桌面连接。

   (3)电子邮件类:SMTP/IMAP/POP3

      电子邮件系统由3部分构成:

      ①用户代理UAUser Agent):用户与电子邮件系统的接口,是用户发送和接收电子邮件的操作台和工具
      ②消息传输代理MTAMessage Transfer Agent): 负责传送邮件
      ③消息访问代理MAAMessage Access Agent):用于用户访问其邮箱并阅读邮件
     TCP/IP 协议 4.3
   邮件传输的示意图:
           TCP/IP 协议 4.3
   

   (4)域名解析类:DNS;(工作原理)

   为了使用和记忆方便,因特网还采用了域名管理系统,简称DNSDomain Name System

   DNS的作用树状分层结构组织管理计算机;查找名字与地址之间的对应关系

   DNS的特点:树形结构;Client/Server工作方式;一个Domain一般是一个工作站群,可有一个主域名服务器及若干辅域名服    务器;应用层协议是标准TCP/IP协议的一个组成部分。

  域名是有层次的。Internet主机域名的一般格式为:四级域名.三级域名.二级域 名.顶级域名(并不一定分四级)如:www.sina.com.cn

顶级的域名划分采用了两种模式:地理模式、组织模式
  TCP/IP 协议 4.3

  地理模式:

  TCP/IP 协议 4.3

  组织模式:

  TCP/IP 协议 4.3

  DNS的组成:域名空间(Name Space)和资源记录(Resource Record)   

                      域名服务器(Name Server)用以提供域名空间结构及信息的服务器程序。

                     解析器(Resolver):作用是应客户程序的要求从域名服务器抽取信息。

  域名空间:域名空间的每一个节点包含一系列的资源信息:一条资源记录共有5项,分别是域名(Domain_name)、生存时间(Time_to_live)、类型(Type)、 类别(Class)和 值(Value

 域名服务器(NameServer) :用以提供域名空间结构及信息的服务器程序,LINUX默认是BIND,提供域名解析服务 

 解析器(Resolver)作用是应客户程序的要求从名字服务器抽取信息。

 DNS工作原理图:

TCP/IP 协议 4.3

   (5)网络管理类:SNMP(简单网络管理协议)

   SNMP通信协议主要是管理程序和代理程序之间通信,共有五类消息:GetRequest,GetNextRequest,GetResponse,      SetRequest,Trap,其模型如下

     TCP/IP 协议 4.3

  4.传输层协议:TCP和UDP

   <1>UDPUser Datagram Protocol,用户数据报协议)是面向无连接的,即在进行数据传输之前不需要建立连接,而目的    主机收到数据报后也不需要发回确认。这种协议提供了一种高效的传输服务。

         TCPTransmission Control Protocol,传输控制协议)是面向连接的,即在进行数据传输之前需要先建立连接,而且目  的主机收到数据报后要发回确认信息。这种协议提供了一种可靠的传输服务。

 TCP/IP传输层可以通过协议端口protocol port,简称端口)来标识通信的应用进程例如: HTTP  80      DHCP 6768

 <2>端口:

      网络互连层的IP协议将数据传送到传输层后,传输协议要将数据传递给正确的应用进程,为了识别是哪一个进程,就需要使用端口号。

      在网络通信中有一种软件端口,它并不是物理意义上的端口,而是特指TCP/IP协议中的端口,是逻辑意义上的端口。
      每个应用程序,不管是服务器还是客户端,都有一个唯一的端口号,或者作为源端口号,或者作为目的端端口号。
      一个端口是一个16位号码,范围为1~65536
      端口将应用进程与IP网络相关联,是应用进程的地址标识
      端口号不是一一对应的
      与IP地址一样,端口号也不是随意使用的,而是按照一定的规定进行分配。端口的分类标准有好多种,这里只介绍一下公用端口和动态端口。
      公认端口:属于标准服务器,由权威机构IANA统一分配,从1~1023
      动态端口:用于客户,从1024~65535
      常见的公认端口:
    TCP/IP 协议 4.3
 

动态端口(DynamicPorts)

      动态端口的范围是从102465535。之所以称为动态端口,是因为它一般不固定分配某种服务,而是动态分配。动态分配是指当一个系统进程或应用程序进程需要网络通信时,它向主机申请一个端口,主机从可用的端口号中分配一个供它使用。当这个进程关闭时,同时也就释放了所占用的端口号
<3>套接字
     为了使得多主机多进程通信时,不至于发生混乱情况,必须把端口号和主机的IP地址结合起来使用,称为插口或套接字(Socket
      由于主机的IP地址是唯一的,这样目的主机就可以区分收到的数据报的源端机了。
      套接字包括IP地址(32位)和端口号(16位),共48位。
      例如(124.33.13.55200)和(126.45.21.5125)就是一对套接字,在整个Internet中,在传输层上进行通信的一对套接  字都必须是唯一的。  
      TCP连接 ::={socket1, socket2}

                     = {(IP1: port1), (IP2: port2)}

      每一条TCP 连接唯一地被通信两端的两个端点(即两个套接字)所确定。

     TCP连接(端到端)的端点不是主机,不是主机的IP 地址,不是应用进程,也不是传输层的协议端口。而是一对套接字(socket)
      UDP协议,虽然在进行通信的进程间不需要建立连接,但是在每次传输数据时,都要给出发送端口和接收端口,因此同样也要使用套接字。 

<4>TCPTransmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETFRFC 793定义。

TCP的特点:

  (1)通信是全双工方式。

  (2)发送方的应用进程按照自己产生数据的规律,不断地把数据块陆续写入到TCP 的发送缓存中。TCP 再从发送缓存中取             出一定数量的数据,将其组成 TCP 报文段(segment)逐个传送给 IP 层,然后发送出去。

  (3)接收方从IP 层收到 TCP 报文段后,先把它暂存在接收缓存中,然后让接收方的应用进程从接收缓存中将数据块逐个读取。

  (4)由于运输层的通信是面向连接的,因此TCP 每一条连接上的通信只能是一对一的,而不可能是一对多、多对一或多对多的。 

<5>TCP是面向连接的通信协议,通过三次握手建立连接;
      通讯完成时要通过四次挥手拆除连接;
      数据传输符合TCP报文首部格式。
  三次握手过程:
 TCP/IP 协议 4.3
  

TCP连接建立过程:首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。

四次挥手过程:

TCP/IP 协议 4.3

 <6>TCP的数据报文:

  TCP/IP 协议 4.3

   源端口和目的端口字段各占2字节。标识了发送方和接收方的应用进程。

 序号字段占 4 字节。TCP 连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据  的第一个字节的序号。

 确认号字段占4字节,是期望收到对方的下一个报文段的数据的第一个字节的序号

  数据偏移占 4 bit,它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。

  保留字段占 6 bit,保留为今后使用,但目前应置为 0

  紧急比特URGURG= 1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)

   确认比特 ACK ,只有当 ACK= 1 时确认号字段才有效。当 ACK= 0 时,确认号无效。 

  推送比特 PSH (PuSH),接收TCP收到推送比特置1的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付。

  复位比特 RST (ReSeT),当 RST = 1 时,表明 TCP连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,通知一下对方。

 同步比特 SYN,同步比特 SYN置为1,就表示这是一个连接请求或连接接受报文。 

 终止比特 FIN (FINal),用来释放一个连接。当FIN= 1 时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。

窗口字段,占 2 字节。窗口字段用来控制对方发送的数据量,单位为字节。TCP连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。

检验和,占 2字节。检验和字段检验的范围包括首部和数据和伪段头(不是TCP里的信息,但是计算校验和的时候也计算了的内容:IP地址,TCP数据段长度,协议类型)。

紧急指针字段 占 16bit紧急指针指出在本报文段中的紧急数据的位置。  

选项(长度可变),TCP规定了二种选项,最大报文段长度MSS(Maximum Segment Size)。和窗口扩大因子,用于扩大接收方窗口

填充字段,这是为了使整个首部长度是 4字节的整数倍。