• TCP/IP协议前期的一知半解


    一、IP提供不可靠、无连接的传输服务。

    不可靠(unreliable) 指它不保证 IP 数据报能成功到达目的地。IP 仅提供最好的传输服务。

    如果发生某种错误,如某个路由器暂时用完缓冲区,IP有一个简单的处理算法:丢弃该数据

    报,然后发送 ICMP 消息给源端。

     

    无连接(connectionless) 表示 IP 并不维护任何关于后续数据报的状态消息,每个数据报的

    处理都是相互独立的。这也说明 IP 数据报可以不按顺序接收。

    注:ICMP:网络控制消息协定,主要用于收集有关网络信息查找错误。

     

    TCP(IP协议6)是一个“可靠的”、面向连结的传输机制,它提供一种可靠的字节流保证数据完整、无损并且按顺序到达。TCP尽量连续不断地测试网络的负载并且控制发送数据的速度以避免网络过载。

    另外,TCP试图将数据按照规定的顺序发送。这是它与UDP不同之处,这在实时数据流或者路由高网络层丢失率应用的时候可能成为一个缺陷。

     

    UDP(IP协议号17)是一个无连结的数据报协议(用户数据报协议)。它是一个“尽力传递”(besteffort)或者说“不可靠”协议——不是因为它特别不可靠,而是因为它不检查数据包是否已经到达目的地,并且不保证它们按顺序到达。如果一个应用程序需要这些特性,那它必须自行检测和判断,或者使用TCP协议。UDP的典型性应用是如流媒体(音频和视频等)这样按时到达比可靠性更重要的应用,或者如DNS查找这样的简单查询/响应应用。

     

    TCP数据传输不同于UDP之处:

     

    1. 有序数据传输
    2. 重发丢失的数据包
    3. 舍弃重复的数据包
    4. 无错误数据传输
    5. 阻塞/流量控制
    6. 面向连接(确认有创建三方交握,连接已创建才作传输。)

      数据传输过程中:

      应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分区成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传输单元(MTU)的限制)。之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。TCP为了保证不发生丢包,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的包发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据包就被假设为已丢失将会被进行重传。TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。

       


      因特网协议族(TCP/IP协议族)是一组实现支持因特网和大多数商业网络运行的协议栈网络传输协议。它有时也被称为TCP/IP协议组,这个名称来源于其中两个最重要的协议:传输控制协议TCP)和因特网协议IP),它们也是最先定义的两个协议。 同许多其他协议一样网络传输协议也可以看作一个多层组合,每层解决数据传输中的一组问题并且向使用这些低层服务的高层提供定义好的服务。高层逻辑上与用户更为接近,所处理数据更为抽象,它们依赖于低层将数据转换成最终能够进行实体控制的形式。

       

      7

      应用层

      application layer

      例如HTTPSMTPSNMPFTPTelnetSIPSSHNFSRTSPXMPPWhoisENRP

      6

      表示层

      presentation layer

      例如XDRASN.1SMBAFPNCP

      5

      会话层

      session layer

      例如ASAPSSH、ISO 8327 / CCITT X.225、RPCNetBIOSASPWinsockBSD sockets

      4

      传输层

      transport layer

      例如TCPUDPTLSRTPSCTPSPXATPIL

      3

      网络层

      network layer

      例如IPICMPIGMPIPXBGPOSPFRIPIGRPEIGRPARPRARPX.25

      2

      数据链路层

      data link layer

      例如以太网令牌环HDLC帧中继ISDNATMIEEE 802.11FDDIPPP

      1

      物理层

      physical layer

      例如线路无线电光纤

      通常人们认为OSI模型的最上面三层(应用层、表示层和会话层)在TCP/IP组中是一个应用层。由于TCP/IP有一个相对较弱的会话层,由TCP和RTP下的打开和关闭连接组成,并且在TCP和UDP下的各种应用提供不同的端口号,这些功能能够被单个的应用程序(或者那些应用程序所使用的库)增加。与此相似的是,IP是按照将它下面的网络当作一个黑盒子的思想设计的,这样在讨论TCP/IP的时候就可以把它当作一个独立的层。

      TCP/IP参考模型(4层):

      4

      应用层

      application layer

      例如HTTPFTPDNS

      (如BGPRIP这样的路由协议,尽管由于各种各样的原因它们分别运行在TCP和UDP上,仍然可以将它们看作网络层的一部分)

      3

      传输层

      transport layer

      例如TCPUDPRTPSCTP

      (如OSPF这样的路由协议,尽管运行在IP上也可以看作是网络层的一部分)

      2

      网络互连层

      internet layer

      对于TCP/IP来说这是因特网协议(IP)

      (如ICMPIGMP这样的必须协议尽管运行在IP上,也仍然可以看作是网络互连层的一部分;ARP不运行在IP上)

      1

      网络接口层

      link layer

      例如以太网Wi-FiMPLS等。

      应用层:

      每一个应用层(TCP/IP参考模型的最高层)协议一般都会使用到两个传输层协议之一: 面向连接的TCP传输控制协议和无连接的包传输的UDP用户数据报文协议。 常用的应用层协议有:

      运行在TCP协议上的协议:

      • HTTP(Hypertext Transfer Protocol,超文本传输协议),主要用于普通浏览。
      • HTTPS(Hypertext Transfer Protocol over Secure Socket Layer, or HTTP over SSL,安全超文本传输协议),HTTP协议的安全版本。
      • FTP(File Transfer Protocol,文件传输协议),由名知义,用于文件传输。
      • POP3(Post Office Protocol, version 3,邮局协议),收邮件用。
      • SMTP(Simple Mail Transfer Protocol,简单邮件传输协议),用来发送电子邮件。
      • TELNET(Teletype over the Network,网络电传),通过一个终端(terminal)登陆到网络。
      • SSH(Secure Shell,用于替代安全性差的TELNET),用于加密安全远程登陆用。

      运行在UDP协议上的协议:

      • BOOTP(Boot Protocol,启动协议),应用于无盘设备。
      • NTP(Network Time Protocol,网络时间协议),用于网络同步。
      • DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),动态配置IP地址。

      其他:

      • DNS(Domain Name Service,域名服务),用于完成地址查找,邮件转发等工作(运行在TCPUDP协议上)。
      • ECHO(Echo Protocol,回绕协议),用于查错及测量应答时间(运行在TCPUDP协议上)。
      • SNMP(Simple Network Management Protocol,简单网络管理协议),用于网络信息的收集和网络管理。
      • ARP(Address Resolution Protocol,地址解析协议),用于动态解析以太网硬件的地址。

      传输层:

      传输层的协议,能够解决诸如端到端可靠性(“数据是否已经到达目的地?”)和保证数据按照正确的顺序到达这样的问题。在TCP/IP协议组中,传输协议也包括所给数据应该送给哪个应用程序。

      网络互连层:

      TCP/IP协议族中的网络互连层(internet layer)在OSI模型中叫做网络层(network layer)。

      正如最初所定义的,网络层解决在一个单一网络上传输数据包的问题。

      网络接口层:

      网络接口层实际上并不是因特网协议组中的一部分,但是它是数据包从一个设备的网络层传输到另外一个设备的网络层的方法。这个过程能够在网卡软件驱动程序中控制,也可以在韧体或者专用芯片中控制。这将完成如添加报头准备发送、通过实体媒介实际发送这样一些数据链路功能。另一端,链路层将完成数据帧接收、去除报头并且将接收到的包传到网络层。 然而,链路层并不经常这样简单。它也可能是一个虚拟专有网络(VPN)或者隧道,在这里从网络层来的包使用隧道协议和其他(或者同样的)协议组发送而不是发送到实体的接口上。VPN和隧道通常预先建好,并且它们有一些直接发送到实体接口所没有的特殊特点(例如,它可以加密经过它的数据)。由于现在链路“层”是一个完整的网络,这种协议组的递归使用可能引起混淆。但是它是一个实现常见复杂功能的一个优秀方法。(尽管需要注意预防一个已经封装并且经隧道发送下去的数据包进行再次地封装和发送)。

      SLIP(串列线路互联网协定是在串行线路上对 IP 数据报进行封装的简单形式,它适用于RS-232 串行端口。

      SLIP是一种简单的帧封装方法,存在以下缺陷:

      每一端必须知道对方的IP 地址,没有办法把本端的 IP 地址通知给另一端

      数据帧中没有类型字段,不能同时使用两种及以上的协议

      SLIP没有在数据帧中加上检验和,错误只能通过上层协议发现

       

      相较于SLIP,PPP 具有下述优点:

      PPP支持在单根串行线路上运行多种协议,而不只是 IP 协议

      每一帧都有循环冗余检验

      通信双方可以进行IP 地址的动态协商(使用 IP 网络控制协议)

      与 CSLIP类似,对 TCP 和 IP 报文首部进行压缩

      链路控制协议可以对多个数据链路选项进行设置

      以太网和802.3 对数据帧的长度都有一个限制,其最大值分别为 1500 和 1492 字节,链路层

      的这个特性称作MTU( 最大传输单元) 。不同类型的网络大多有一个上限,若 IP 层要传输的数据报长度大于链路层的 MTU,则在 IP 层需对该数据报进行分片(fragmentation) ,把数据报分为若干片,使得每一片都小于 MTU。

      若两台主机之间的通信要通过多个网络,那么每个网络的链路层可能有不同的MTU。在两台

      主机通信路径中的最小MTU 被称作路径 MTU。路径 MTU 不一定是常数,它取决于当时所选

      择的路由,而选路不一定是对称的,因此路径 MTU 在两个方向上不一定是一致的。

       

       

      TTL:设置数据报可经过的最多路由器数,初值由源主机设置(32 或 64) ,每经过一个

      路由器,其值减 1,当值为 0 时,数据报被丢弃,并发送 ICMP 报文通知源主机

      如果目的主机与源主机直接相连(点对点链路) 或在一个共享网络上( 以太网或令牌环

      网) ,那么 IP数据报就直接送到目的主机上。否则,主机把数据报发往默认路由器,由它来

      转发该数据报。

      IP层既可以配置成路由器功能,又可以配置成主机的功能。二者本质上的区别在于主机不把

      数据报从一个接口转发到另一个接口,而路由器则要转发数据报。

    一个行者的旅途
  • 相关阅读:
    蚂蚁
    N的阶乘
    最小公倍数LCM
    最大公约数GCD
    Truck History(卡车历史)
    亲戚
    [SDOI2011]打地鼠
    连续自然数和
    P4250 [SCOI2015]小凸想跑步
    P4048 【[JSOI2010]冷冻波】
  • 原文地址:https://www.cnblogs.com/xinzghewanfu/p/5904258.html
Copyright © 2020-2023  润新知