TCP/IP 学习1——TCP/IP模型介绍

TCP/IP 学习1——TCP/IP模型介绍

分层
  • 为什么要分层?

    如果没有分层设计,一个软件厂商需要设计所有的通讯细节,包含物理层接口与信号编码,地址寻址,传输机制与保障。

  • 应用层:处理特定的应用程序细节。

    FTP协议(应用程序到应用程序)

  • 运输层:为两台主机上的应用程序提供端到端的通讯。

    TCP和UDP协议(端口)

  • 网络层:处理分组在网络中的活动,例如分组选路。

    • IP协议,逐跳工作,每一跳(路由器)根据目的IP地址查询下一跳,最终转发到目的地。

    • ICMP协议:IP数据包在发送途中一旦发生异常导致无法到达对端目标地址时,需要给发送端发送一个发生异常的通知。ICMP就是为这一功能而制定的。它有时也被用来诊断网络的健康状况。

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

  • 链路层:处理与电缆(或其他任何传输媒介的物理接口细节)。

    以太网协议,逐介质工作。

    一般情况下一个数据包从源到目的,IP地址总是不变的,但是链路层协议却在不断变化(源和目的都在变化)
    但是在开启NAT转换后IP源地址可以变化,目的地址依旧不能改变。
    非直连,目的MAC是本地网关的MAC地址;直连,目的MAC是目的主机的MAC地址。

  • 下三层一般在内核执行,即由操作系统负责。
  • 应用层关心应用程序的细节,下三层处理通讯细节。
  • 分层:为上层协议隐藏底层通讯的工作细节。
  • 网络ip提供的是一种不可靠的的服务,只是尽可能快的把分组从源节点送到目的结点,但不提供可靠性保障
  • TCP在不可靠的IP层上提供一个可靠的运输层
  • UDP不可靠,会丢包,但效率高。(查询:DNS;数据传输:TFTP;实时流量:语音视频流)
  • 非直连,目的MAC是本地网关的MAC地址;直连,目的MAC是目的主机的MAC地址。
封装
  • 以太网数据帧的物理特性使其长度必须在46~1500字节之间

    如果不足46字节会用0补足。

封装

基本的协议号和端口号

例子

假设甲给乙发送电子邮件,内容为:“早上好”。而从TCP/IP通信上看,是从一台计算机A向另一台计算机B发送电子邮件。我们就通过这个例子来讲解一下TCP/IP通信的过程。

1. 发送数据包
  • 应用程序处理

    • 启动应用程序新建邮件,将收件人邮箱填好,再由键盘输入邮件内 容“早上好”,鼠标点击“发送”按钮就可以开始TCP/IP的通信了。
    • 首先,应用程序中会进行编码处理。(相当于OSI的表示层功能)
    • 编码转化后,实际邮件不一定会马上被发送出去,因为有些邮件的软件有一次同时发送多个邮件的功能,也可能会有用户点击“收信”按钮以后才一并接收新邮件的功能。(像这种何时建立通信连接何时发送数据的管理功能,从某种宽泛的意义上看属于OSI参考模型中会话层的功能)
    • 应用在发送邮件的那一刻建立TCP连接,从而利用这个TCP连接发送数据。它的过程首先是将应用的数据发送给下一层的TCP,再做实际的转发处理
  • 传输层

    • TCP根据应用的指示(这种关于连接的指示相当于OSI参考模型中的会话层。),负责建立连接、发送数据以及断开连接。TCP提供将应用层发来的数据顺利发送至对端的可靠传输

    • 为了实现TCP的这一功能,需要在应用层数据的前端附加一个TCP首部。TCP首部中包括源端口号和目标端口号(用以识别发送主机跟接收主机上的应用)、序号(用以发送的包中哪部分是数据)以及校验和(Check Sum,用来检验数据的读取是否正常进行的方法,用以判断数据是否被坏)

    • 随后将附加了TCP首部的包再发送给IP网络层。

  • 网络层

    • 网络层将传输层传过来的TCP首部和TCP数据合起来当做自己的数据,并在TCP首部的前端在加上自己的IP首部。因此,IP数据包中IP首部后面 紧跟着TCP首部,然后才是应用的数据首部和数据本身。IP首部中包含接收端IP地址以及发送端IP地址。紧随IP首部的还有用来判断其后面数据是TCP还是UDP的信息。(即上一层所使用的协议类型)

    • IP包生成后,参考路由控制表决定接受此IP包的路由或主机。随后,IP包将被发送给连接这些路由器或主机网络接口的驱动程序,以实现真正发送数据。

    • 如果尚不知道接收端的MAC地址,可以利用ARP(Address Resolution Protocol)查找。只要知道了对端的MAC地址,就可以将MAC地址和IP地址交给以太网的驱动程序,实现数据传输。

      在OSI模型中ARP属于链路层;而在TCP/IP模型中,ARP属于网络层。ARP报文是由以太网帧进行封装传输的,没有封装进IP包。实际上,对网络接口层的以太网帧来讲,它们同样是帧的上层协议,当收到以太帧时,根据帧的协议字段判断是送到ARP还是IP。之所以不把它放在数据链路层,是因为它并不具备数据链路层的功能,它的作用是为数据链路层提供接收方的帧地地址

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

    • 从IP传过来的IP包,对于以太网驱动来说不过就是数据。给这数据附加上以太网首部并进行发送处理。以太网首部中包含接收端MAC地址、发送端MAC地址以及标志以太网类型的以太网数据的协议。根据上述信息产生的以太网数据包将通过物理层传输给接收端。发送处理中的FCS(Frame Check Sequence,帧校对序列 )由硬件计算,添加到包的最后。

      设置FCS的目的是为了判断数据包是否由于噪声而被破坏。基于循环冗余检测。

TCPIP各层对邮件的收发处理

2. 经过数据链路的包

分组数据包(以下简称包)经过以太网的数据链路时的大致流程如下图所示。不过请注意,该图对各个包首部做了简化。

分层中包的结构

  • 包流动时,从前往后依此被附加了以太网包首部、IP包首部、TCP包首部(或者UDP包首部)以及应用自己的包首部和数据。而包的最后则追加了以太网包尾(包首部附加于包的前端,而包尾则指追加到包的后端的部分。) (Ethernet Trailer)。
  • 每个包首部中至少都会包含两个信息:一个是发送端和接收端地址,另一个是上一层的协议类型
    • 经过每个协议分层时,都必须有识别包发送端和接收端的信息。以太网会用MAC地址,IP会用IP地址,而TCP/UDP则会用端口号作为识别两端主机的地址。即使是在应用程序中,像电子邮件地址这样的信息也是一种地址标识。这些地址信息都在每个包经由各个分层时,附加到协议对应的包首部里边。
    • 此外,每个分层的包首部中还包含一个识别位,它是用来标识上一层协议的种类信息。例如以太网的包首部中的以太网类型,IP中的协议类型以及TCP/UDP中两个端口的端口号等都起着识别协议类型的作用。 就是在应用的首部信息中,有时也会包含一个用来识别其数据类型的标签。
3. 数据包的接受处理

包的接收流程是发送流程的逆序过程。

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

    • 主机收到以太网包以后,首先从以太网的包首部找到MAC地址判断是否为发给自己的包。如果不是发给自己的包则丢弃数据(很多NIC产品可以设置为即使不是发给自己的包也不丢弃数据。这可以用于监控网络流量。) 。

      NIC(Network Interface Card ):网卡

    • 而如果接收到了恰好是发给自己的包,就查找以太网包首部中的类型域从而确定以太网协议所传送过来的数据类型。在这个例子中数据类型显然是IP包,因此再将数据传给处理IP的子程序,如果这时不是IP而是其他诸如ARP的协议,就把数据传给ARP处理。总之,如果以太网包首部的类型域包含了一个无法识别的协议类型,则丢弃数据。

  • 网络层

    • 网络层收到IP包首部及后面的数据部分以后,也做类似的处理。如果判断得出包首部中的IP地址与自己的IP地址匹配,则可接收数据并从中查找上一层的协议。如果上一层是TCP就将IP包首部之后的部分传给 TCP处理;如果是UDP则将IP包首部后面的部分传给UDP处理。
    • 对于有路由器的情况下(即路由器接收到该包),接收端地址往往不是自己的地址(接收到该包的路由器的地址),此时,需要借助路由控制表,在调查应该送达的主机或路由器以后再转发数据。
  • 传输层

    • 在传输层中,首先会计算一下校验和,判断数据是否被破坏。然后检查是否在按照序号接收数据。最后检查端口号,确定具体的应用程序。

    • 在TCP中,数据接收完毕后,接收端则发送一个“确认回执”给发送端。如果这个回执信息未能达到发送端,那么发送端会认为接收端没有接收到数据而一直反复发送。而UDP不会返回确认。

      TCP提供了一种可靠的、面向连接的服务。 拥有确认机制,流量控制和拥塞控制 。

      UDP提供了一种不可靠、无连接的服务。 UDP尽最大努力交付,即不保证可靠交付。

    • 数据被完整地接收以后,会传给由端口号识别的应用程序。

  • 应用程序处理

    • 接收端应用程序会直接接收发送端发送的数据。通过解析数据可以获知邮件的收件人地址是乙的地址。如果主机B上没有乙的邮件信箱,那么主机B返回给发送端一个“无此收件地址”的报错信息。
    • 但在这个例子中,主机B上恰好有乙的收件箱,所以主机B和收件人乙能够收到电子邮件的正文。邮件会被保存到本机的硬盘上。如果保存也能正常进行,那么接收端会返回一个“处理正常”的回执给发送端。反之,一旦出现磁盘满、邮件未能成功保存等问题,就会发送一个“处理异常”的回执给发送端。由此,用户乙就可以利用主机B上的邮件客户端,接收并阅读由主机A上的用户甲所发送过来的电子邮件——“早上好”。
分用

分用

端口号
  • 服务器一般是通过知名端口号来识别的(ftp21,telnet23)
  • 客户端口号又称作临时端口号(即存在时间短暂)
  • 大多数TCP/IP实现给临时端口号分配在1024~5000之间的端口号;
  • 大于5000的端口号是预留给其他服务器的(Internet上并不常用的服务)
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值