TCP/IP 概述

Posted glsy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TCP/IP 概述相关的知识,希望对你有一定的参考价值。

我们现在处于一个互联网时代,每时每刻都能接收到各地的新消息,这些都归功于网络Internet的产生。Internet最先起源于军事领域,是美国国防部用来控制遍布美国各处的防空导弹的网络,原名是ARPANET。计算机网络就是一组物理上分隔的自治计算机的组合,和我们人一样,许许多多的单个人组合成了国家、人类,每种人群或每种国家中人与人靠各种语言来交流沟通。计算机网路也类似,也有沟通各个计算机的语言,这种语言的就是协议。协议就是统一建立的一些规定,比如语言,就是我们人类建立的协议,有中文、英文等,他们都有语法、语义,描述了如何正确的与人沟通。TCP/IP就是两种协议。下面来描述网络中的一些观点和名词。

分层

我们的前辈很机智,为网络建立了分层模型。曾经看到过一种对于网络形象的描述,把网络和邮递过程相比较。我们都熟悉寄信的过程,寄件人首先添加信封,信封上有发件人、发件人地址、发件人邮编以及收件人、收件人地址、收件人邮编,再贴上邮票,信件就准备好了;再将信件投递到当地的邮箱,等待邮递员揽件;邮递员会每天定时收集邮箱中的信件,并将信件投递到上一级邮局,上一级根据邮寄地址或邮编,判断是投递到上一级的邮局,还是转发到下一级的其他邮局。最后到达收件地址的对应邮局时,邮递员将对应邮件投送到对应的收件人手中,收件人验明信件后就能拆开信件读信了。如下图所示。

image

同样,TCP/IP也采用了分层的方法对网络结构进行划分。下图是TCP/IP协议族的分层模型。

 

image

      从上图可以看出TCP/IP协议族的大致结构,我们平常电脑中使用的联网应用,例如浏览器、qq在os层面都是一个用户进程,都使用某种应用层协议,如http、ftp等,这些应用层协议都要使用下层的传输层协议。常见的传输层协议有TCP和UDP,其中TCP协议是面向连接的、可靠的传输层协议,是端到端协议,端指的是端口,每个应用程序通信都会被分配一个端口;UDP是不可靠的连接,只负责发送数据,不管是否收到。但他们都共同使用下层网络层的IP协议,IP协议建立的是点到点的连接,点指的是连接的两个实体,即发送者和接受者,本质上是IP地址。ICMP是IP协议的附属协议,IP用它来交换错误等重要信息。IGMP用来发送组播信息。ARP协议主要用来转换网络层的IP地址和链路层的物理Mac地址。RARP是ARP的逆操作。

封装和分用

      封装和分用是一对逆操作,和上面我们描述的寄信的流程类似。封装如下图所示。

image

      封装描述的就是我们发送数据的过程。首先,用户在应用程序中组装数据,应用程序使用应用层协议在数据的头部或尾部加上一些控制信息,随后将组装后的信息发送到下层的传输层,如TCP协议,TCP也会为应用层传递的信息加上TCP首部,其实也是一些控制信息,主要包括发送接收者的端口、上层应用层协议等信息,随后将组装的TCP段发送到下层的网络层,网络层主要是IP协议,同样也会为接收到的数据加上IP首部,主要包含发送接收者的IP地址、上层传输层协议等信息。随后组装的IP数据报传输到下层的链路层,链路层也会封装数据,加入以太网的首尾部。最后,封装完的以太网帧会通过底层的网络线路传送到目的地。

      下面是分用的过程。

image

       分用是封装的逆过程。描述的是我们接受发送的数据的过程。本地的计算机接链路层接收到以太网帧后,会对帧进行解析,根据以太网首部中的帧类型,选择将数据发送那一个网络层协议进行解析。数据如果使用的是IP协议,随后数据将会交给IP协议解析,其根据IP首部中的协议值进行分用,选择将数据交个哪一个传输层协议解析,不管是TCP还是UDP,都会根据传输层头部信息中的端口号选择将数据发送给哪一个应用程序。最后我们的应用程序就能处理数据了。

IP地址 端口号 DNS

      互联网上的每个接口都需要在网络中有唯一的地址,这样我们才能正常通信。所以产生了IP地址,目的就是唯一确定接口。IP地址发展迅猛,从早期的IPv4,现在正在过渡到IPv6。IPv4就是IP的version4,主要采用32位的二进制数来表示地址。我们人为将其分为了五类。如下图所示。

image

     这五类地址为A、B、C、D和E类地址。最大的区别是头部标识。IP地址也包括两个部分,构成是网路号+主机号。为了方便我们平常的表示,我们将IP地址表示为点分十进制数,即四个十进制数。下图为五类地址对应的点分十进制数范围。

image

    一台计算机可以有多个IP地址。IP地址的网路号分配主要由NIC(network information center)负责。随着互联网的发展,IPv4的剩余地址越来越少,为了解决这个问题,提出了IPv6,即使用64位的二进制数来表示IP地址。

    端口号是标识应用程序的标志。TCP中使用16位二进制数表示端口号,总共有65536个端口号。其中1-1023是常用端口号,由IANA分配。如我们常见的Http协议使用80端口,Https使用443端口,Ftp使用21端口;还有我们平常使用的tomcat默认首页使用8080端口。

    我们平常生活中比较难记住IP地址,随后就产生了域名,即使用自然语言来标识IP地址,随后就产生了域名。如百度首页IP地址是180.97.33.107,域名是www.baidu.com,我们平常都是用域名访问,浏览器中间帮助我们多做了一步操作,就是请求DNS服务器,获取对应域名的IP地址,最后还是通过IP地址请求。

以上是关于TCP/IP 概述的主要内容,如果未能解决你的问题,请参考以下文章

TCP/IP --概述

TCP/IP协议栈概述及各层包头分析

TCP/IP概述

TCP/IP详解学习笔记-TCP协议概述

即时通讯开发之TCP/IP中的TCP 协议概述

TCP/IP详解 卷1 第一章 概述