简单理解TCP/IP协议

1、什么是TCP/IP

  TCP/IP是一个协议族,是由于TCP/IP协议包括TCP、IP、UDP、ICMP、RIP、TELNETFTP、SMTP、ARP、TFTP等许多协议,这些协议一块儿称为TCP/IP协议。通讯相似于语言的沟通,能够把协议理解为语言沟通,你们都说中文,我们两我的可以互相交流。浏览器

  TCP/IP协议族按照层次分为链路层、网络层、传输层、应用层四个层次。(与TCP/IP协议并列的还有OSI网络框架模型---开放式系统互连参考模型,分为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层七个层次)安全

  为了更加形象的说明协议,能够把“数据链路层”比做一我的,可是这我的不会说话,交流起来比较困难。为了更方便的交流,便引出了“网络层”,能够认为它是会说话的人,那么你们都会说话,可是一我的说英语一我的说中文,你们仍是不可以更好的沟通。那么接下来你们该讨论下如何沟通,必须你们都要说中文,这样你们才能理解彼此说的是什么意思,“传输层”就能够认为会说中文的人。这样在传输层你们就能实现正常的通讯了。为了你们更方便的沟通,或者说让沟通看起来更加华丽更加实用。这时候“应用层”便应运而生。其实就是更方便,更有效你们沟通,能够把它比做为中文说的很好的人。服务器

  按照层次由上到下,层层包装。cookie

一、应用层:最上面的就是应用层了,这里面有http,ftp等等咱们熟悉的协议。(TCP/IP的分层中,将OSI参考模型中的会话层、表示层和应用层的功能都集中到了应用程序中实现。TCP/IP应用的架构绝大多数属于客户端/服务器模型。)网络

  负责直接和应用程序接口并提供常见的网络应用服务,此外,为了向应用程序提供有效的网络服务,应用层还须要确立相互通讯的应用进程的有效性并提供双方之间的同步,须要提供应用进程所需的信息交换和远程操做,须要创建错误恢复的机制以保证应用层数据的一致性。(有FTP协议、TFTP协议、Telnet协议、DNS协议、HTTP协议)。session

  向用户提供一组经常使用的应用程序,好比电子邮件、文件传输访问、远程登陆等。远程登陆TELNET使用TELNET协议提供在网络其它主机上注册的接口。TELNET会话提供了基于字符的虚拟终端。文件传输访问FTP使用FTP协议来提供网络内机器间的文件拷贝功能。架构

  DNS协议:主要功能是经过用户友好的名称为用户提供域名解析服务,即将主机名域名解析为IP地址。框架

  HTTP协议:超文本传输协议,是一种详细规定了浏览器和万维网服务器之间互相通讯的规则。tcp

  SMTP协议:Simple Mail Transfer Protocol(简单邮件传输协议)。编码

  SNMP协议:Simple Network manage Protocol(简单网络管理协议)。

  FTP协议:File Transfer Protocol(文件传输协议)。

应用层的主要应用:

  WWW:浏览器和服务端之间通讯所用的协议是HTTP协议,所传输数据的主要格式为HTML,WWW中的HTTP属于OSI应用层的协议,HTML属于表示层的协议。

  电子邮件:发送电子邮件时用到的协议是SMTP。最初,只能以文件格式发送电子邮件。而后如今的电子邮件的格式由MIME协议扩展以后,就能够发送声音、图像等各式各样的信息。MIME属于表示层的协议。

  文件传输(FTP):文件传输是指将其它计算机磁盘上的文件转移到本地计算机上,或将本地磁盘上的文件传送到其它计算机磁盘上。该文件传输过程使用的协议叫作FTP协议。在FTP中进行文件传输时会创建两个TCP链接,分别是发送传输请求时所要用到的控制链接与实际传输数据时所要用到的数据链接。

  远程登陆(TELNET与SSH):远程登陆是指登陆到远程的计算机上,使那台计算机上的程序得以运行的一种功能。远程登陆经常使用TELNET与SSH两种协议。(固然还有其它一些协议)

  网络管理(SNMP):在TCP/IP中进行网络管理时,采用SNMP(Simple Network Management Protocol)协议。使用SNMP协议管理的主机、网桥、路由器等称做SNMP代理,而进行管理的那一端叫作管理器。SNMP就是这个管理器和代理要用到的协议。在SNMP的代理端,保存着网络接口的信息、通讯数据量、异常数据量以及设备温度等信息。这些信息能够经过MIB(Management Information Base)访问。所以,在TCP/IP的网络管理中,SNMP属于应用协议,MIB属于表示层协议。

二、传输层:著名的TCP和UDP协议就在这个层次(不要告诉我你没用过UDP玩星际)。

  提供应用程序间的通讯。其功能包括:

  (1)格式化信息流;

  (2)提供可靠传输。为实现后者,传输层协议规定接收端必须发回确认,而且假如分组丢失,必须从新发送。

  UDP协议(User Datagram Protocol,用户数据报协议)是一种不可靠无链接的传输层协议,不考虑流控制、错误控制,没有重传机制,不会对分组进行顺序检查和排序。(UDP报头含8字节定长和2字节倍数的数据<不是2字节倍数时须要填充位>)(UDP是一种面向无链接的传输层协议。UDP不关心对端是否真正收到了传送过去的数据。若是须要检查对端是否收到分组数据包,或者对端是否链接到网络,则须要在应用程序中实现。UDP经常使用在分组数据较少或多播、广播通讯以及视频通讯等多媒体领域。

  TCP协议(Transport Control Protocol,传输控制协议)是一种面向链接、可靠的、基于字节流的传输层协议,采用了确认机制、超时重传机制,还会对接收到的TCP报文段进行从新排列整理。(TCP报头含20字节定长、选项和填充<选项和填充小于等于40字节>)(TCP是一种面向链接的传输层协议。它能够保证两端通讯主机之间的通讯可达。TCP可以正确处理传输过程当中丢包、传输顺序乱掉等异常状况。)

  UDP优势:

    控制选项少,无须创建链接,从而使得数据传输过程当中的延迟小、数据传输效率高。

    UDP适合对可靠性不高,或网络质量有保障,或对实时性要求较高的应用程序。

  TCP优势:

    能保证可靠性、稳定性。

    TCP适合用于端到端的通讯,适用于对可靠性要求较高的服务。

三、网络层:用来处理网络上流动的数据包(网络传输中最小的数据单元),规定了怎样的路径把数据包传输到目标计算机,并把数据包传送给对方。(与tcp/ip协议密切相关的有IP协议、ARP协议、RARP协议)。IP协议就在这里,它负责对数据加上IP地址和其余的数据(后面会讲到)以肯定传输的目标。

负责相邻计算机之间的通讯。其功能包括三方面。

  (1)处理来自传输层的分组发送请求,收到请求后,将分组装入IP数据报,填充报头,选择去往信宿机的路径,而后将数据报发往适当的网络接口。

  (2)处理输入数据报:首先检查其合法性,而后进行寻径--假如该数据报已到达信宿机,则去掉报头,将剩下部分交给适当的传输协议;假如该数据报还没有到达信宿,则转发该数据报。

  (3)处理路径、流控、拥塞等问题。

  IP协议:Internetworking Protocol(网间网协议),IP是跨越网络传送数据包,使整个互联网都能收到数据的协议。IP也是分组交换的一种协议,可是它不具有重发机制,所以它是不可靠传输协议。

  IPv4:头部由20字节定长和一个可选的变长部分(小于等于40字节)组成,32位记录源端IP地址,32位记录目的端IP地址,全部内容长度最大为2^16=65476字节。

  IPv6:头部由40字节定长组成。128位记录源端IP地址,128位记录目的端IP地址。

  ARP协议:地址解析协议,专用于将32位IP地址映射到网卡的48位MAC地址(从分组数据包的IP地址中解析出物理地址(MAC地址)的一种协议。)。

  RARP协议:主要用于将网卡的48位MAC地址转换为32位IP地址。

  ICMP协议:Internet Control Message Protocol(互联网控制信息协议),IP数据包在传输的途中一旦发生异常致使没法到达目的地址时,须要给发送端发送一个异常通知。ICMP就是为了这个功能制定的。

四、链路层:用来处理链接网络的硬件部分,包括控制操做系统、硬件的设备驱动和网络适配器,及光纤等物理可见的部分。硬件上的范畴均属于链路层的做用范围以内。

  TCP/IP软件的最底层,负责接收IP数据报并经过网络发送之,或者从网络上接收物理帧,抽出IP数据报,交给IP层。

  这个层次为待传送的数据加入一个以太网协议头,并进行CRC编码,为最后的数据传输作准备。再往下则是硬件层次了,负责网络的传输,这个层次的定义包括网线的制式,网卡的定义等等(这些咱们就不用关心了,咱们也不作网卡),因此有些书并不把这个层次放在tcp/ip协议族里面,由于它几乎和tcp/ip协议的编写者没有任何的关系。

  发送协议的主机从上自下将数据按照协议封装,而接收数据的主机则按照协议从获得的数据包解开,最后拿到须要的数据。这种结构很是有栈的味道,因此某些文章也把tcp/ip协议族称为tcp/ip协议栈。

通俗理解:

  TCP/UDP是面向传输层的协议,HTTP是面向应用层的协议,TCP和UDP使用该协议从一个网络传送数据包到另外一个网络。把IP想像成一种高速公路,它容许其它协议在上面行驶并找到到其它电脑的出口。TCP和UDP是高速公路上的“卡车”,它们携带的货物就是像HTTP,文件传输协议FTP这样的协议等。
  你应该能理解,TCP和UDP是FTP,HTTP和SMTP之类使用的传输层协议。虽然TCP和UDP都是用来传输其余协议的,它们却有一个显着的不一样:TCP提供有保证的数据传输,而UDP不提供。这意味着TCP有一个特殊的机制来确保数据安全的不出错的从一个端点传到另外一个端点,而UDP不提供任何这样的保证。另外,TCP是面向链接的,能够类比于打电话,UDP是面向非链接的,能够类比于发短信。
  TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,HTTP是应用层协议,主要解决如何包装数据。
  HTTP(超文本传输协议):是利用TCP在两台电脑(一般是Web服务器和客户端)之间传输信息的协议。客户端使用Web浏览器发起HTTP请求给Web服务器,Web服务器发送被请求的信息给客户端。首先它是一个协议,而且是基于TCP/IP协议基础之上的应用层协议。HTTP协议详细规定了浏览器与服务器之间相互通讯的规则,是万维网交换信息的基础。HTTP是基于请求-响应形式而且是短链接,而且是无状态的协议。针对其无状态特性,在实际应用中又须要有状态的形式,所以通常会经过session/cookie技术来解决此问题。
  Socket:Socket不属于协议范畴,而是一个调用接口(API),Socket是对TCP/IP协议的封装,经过调用Socket,才能使用TCP/IP协议。Socket链接是长链接,理论上客户端和服务器端一旦创建链接将不会主动断开此链接。Socket链接属于请求-响应形式,服务端可主动将消息推送给客户端。

2、以HTTP协议为例的工做流程

  与之密切相关的协议有IP/TCP/DNS

  DNS解析主机名域名为IP地址后,IP经过ARP解析后找到目的主机,TCP则经过三次握手与目的主机创建链接。

  链接后,若一方想主动取消链接,TCP经过四次挥手与主动主机取消链接。
  一、TCP链接创建的三次握手过程:

  (前提:A主动打开,B被动打开。客户端用A表示,服务器端用B表示)

  1. 客户端发个请求“开门呐,我要进来”给服务器;
  2. 服务器发个“进来吧,我去给你开门”给客户端;
  3. 客户端有很客气的发个“谢谢,我要进来了”给服务器。

 

  二、TCP链接释放的四次挥手过程

  (前提:A主动关闭,B被动关闭。客户端用A表示,服务器端用B表示)

  

  1. 客户端发个“时间不早了,我要走了”给服务器,等服务器起身送他;
  2. 服务器听到了,发个“我知道了,那我送你出门吧”给客户端,等客户端走;
  3. 服务器把门关上后,发个“我关门了”给客户端,而后等客户端走(尼玛~矫情啊);
  4. 客户端发个“我知道了,我走了”,以后本身就走了。

3、当访问一个网页时,全部协议在其中的做用以下:

四.深刻理解TCP/IP

相关文章
相关标签/搜索