zoukankan      html  css  js  c++  java
  • TCP/IP 2-基础知识

    2.1 出现背景

    2.2 标准化 RFC

    2.3 互联网基本知识

    互联网进行通信时使用的协议就是TCP/IP通信协议。

    互联网中的每个网络都是由骨干网和末端网组成的,每个网络之间通过NOC(网络交换中心)相连。

    ISP和局域网:连接互联网需要向ISP或区域网提出申请。

    2.4 TCP/IP 协议分层模型

    TCP/IP分五层,与OSI分层对应关系:应用层(OSI应用层、表示层、会话层)、传输层(OSI传输层)、互联网层(OSI网络层)、网卡层(OSI数据链路层)、硬件(OSI物理层)

    1)硬件/物理层

    物理层设备,电缆、电话线等。

    2)网络接口层(数据链路层)

    利用以太网中的数据链路层进行通信,因此属于接口层。也就是说把它当做让NIC起作用的“驱动程序”也无妨。

    互联设备之间识别和传输数据帧。集线器、中继器、网桥(2层交换机)中有地址转发表。

    2.2.4 互联网层(网络层)

    使用IP协议。IP协议基于IP地址转发分包数据。

    地址管理与路由选择。

    TCP/IP分层中的互联网层与传输层的功能通常是由操作系统提供的。尤其是路由器,它必须得实现通过互联网层转发分组数据包的功能。

    此外,连接互联网的所有主机和路由器都必须实现IP的功能。

    该层的协议主要有IP、ICMP、ARP、RARP:

    IP是跨越网络传送数据包,使整个互联网都能收到数据的协议。期间使用IP地址作为主机的标识。IP还隐含着数据链路层的功能。通过IP,相互通信的主机之间不论经过怎样的底层数据链路都能实现通信。虽然IP也是分组交换的一种协议,但是它不具备重发机制,属于不可靠传输协议。

    ICMP:IP数据包在发送途中一旦发生异常导致无法到达目标地址时,需要给发送端发送一个发生异常的通知。ICMP就是为这一功能而制定的。路由器中的路由表更新也采用ICMP报文,路由器主动发出的一般是ICMP报文。ping使用的也是ICMP报文。

    ARP:从分组数据包的IP地址中解析出物理地址MAC地址的一种协议。

    RARP:从物理地址解析出IP地址。

    2.4.5 传输层

    传输层最主要的功能就是能够让应用程序之间实现通信。需要使用到端口号识别特定程序。主要有TCP和UDP。

    TCP是一种面向连接的传输层协议。它保证两端通信主机之间的通信可达。TCP能够正确处理在传输过程中丢包、传输顺序乱掉等异常情况/此外TCP还能有效利用带宽,缓解网络拥堵。然而为了建立和断开连接,有时它需要至少7次的发包收包,导致网络流量的浪费。此外,为了提高网络的利用率,TCP协议中定义了各种各样复杂的规范,因此不利于视频会议。

    UDP是一种面向无连接的传输层协议。UDP不会关注对端是否真的收到了传送过去的数据,如果需要检查对端是否接收到分组数据包,或者对端是否连接到网络,则需要在应用程序中实现。UDP常用于分组数据较少或多播、广播通信以及视频通信等多媒体领域。

    2.4.6 应用层(会话层以上的分层)

    具体的应用程序协议。

    WWW(HTTP属于OSI应用层的协议、HTML属于表示层的协议)、SMTP、FTP、远程登录(TELNET和SSH)

    2.5 TCP/IP分层模型与通信示例

    2.5.1 数据包首部

    每个分层中,都会对所发送的数据附加一个首部,在这个首部中包含了该层必要的信息,如发送的目标地址以及协议相关信息。从上一分层收到的包全部都被认为是本层的数据。

    术语:包可用于所有层数据;帧用于数据链路层包的单位;数据包是IP和UDP使用的包的单位;段是TCP数据流中的信息;消息是指应用协议中数据的单位。

    2.5.2 发送数据包

    应用程序处理(编码、在发送的那一刻建立TCP连接)->TCP模块的处理(建立连接、发送数据、提供可靠性、断开连接、TCP首部源端口号目的端口号序号校验和)->IP模块的处理(加上IP首部接收端IP地址发送端IP地址还有判断传输层协议的信息,IP包生成后由路由控制表决定接受此IP包的路由或主机,然后将包给连接这些路由器或主机网络接口的驱动程序,ARP查询MAC)->网络接口即以太网驱动的处理(加以太网首部,包含接收端MAC地址、发送端MAC地址以及标志以太网类型的以太网数据协议)。

    2.5.3 经过数据链路的包

    分组数据包流动时,从前往后依次被附加了以太网包首部、IP包首部、TCP包首部(或UDP包首部)以及应用自己的包首部和数据。而包的最后则追加了以太网包尾。

    每个包首部至少包含两个信息:发送端和接收端地址、上一层的协议类型。

  • 相关阅读:
    Unity调用Andriod相册,细节分享(对于《Unity头像上传功能实现 一》的细节分享)
    Unity头像上传功能实现 一(接在《Unity调用Andriod相册,细节分享》后)
    webstorm启动时遇到The JVM could not be started的解决方法
    win10安装mysql出现请键入 NET HELPMSG 3534 以获得更多的帮助。
    Docker与虚拟机性能比较
    IntelliJ IDEA如何将普通java项目变为web项目
    is not assignable to javax.servlet.Servlet
    javascript深入理解js闭包
    Idea当前文件编码转换方法
    idear Make Project时提示了很多错误,什么未结束的字符串子面量、非法的表达示开始
  • 原文地址:https://www.cnblogs.com/cjj-ggboy/p/12431188.html
Copyright © 2011-2022 走看看