TCP/IP协议基本概念

为何会有TCP/IP协议

在世界上各地,各类各样的电脑运行着各自不一样的操做系统为你们服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别。就好像圣经中上帝打乱了各地人的口音,让他们没法合做同样。计算机使用者意识到,计算机只是单兵做战并不会发挥太大的做用。只有把它们联合起来,电脑才会发挥出它最大的潜力。因而人们就千方百计的用电线把电脑链接到了一块儿。mysql

可是简单的连到一块儿是远远不够的,就好像语言不一样的两我的互相见了面,彻底不能交流信息。于是他们须要定义一些共通的东西来进行交流,TCP/IP就是为此而生。TCP/IP不是一个协议,而是一个协议族的统称。里面包括了IP协议,IMCP协议,TCP协议,以及咱们更加熟悉的http、ftp、pop3协议等等。电脑有了这些,就好像学会了外语同样,就能够和其余的计算机终端作自由的交流了。web

TCP/IP协议分层

提到协议分层,咱们很容易联想到ISO-OSI的七层协议经典架构,可是TCP/IP协议族的结构则稍有不一样。如图所示sql

TCP/IP协议族按照层次由上到下,层层包装。最上面的就是应用层了,这里面有http,ftp,等等咱们熟悉的协议。而第二层则是传输层,著名的TCP和UDP协议就在这个层次(不要告诉我你没用过udp玩星际)。第三层是网络层,IP协议就在这里,它负责对数据加上IP地址和其余的数据(后面会讲到)以肯定传输的目标。第四层是叫数据链路层,这个层次为待传送的数据加入一个以太网协议头,并进行CRC编码,为最后的数据传输作准备。再往下则是硬件层次了,负责网络的传输,这个层次的定义包括网线的制式,网卡的定义等等(这些咱们就不用关心了,咱们也不作网卡),因此有些书并不把这个层次放在tcp/ip协议族里面,由于它几乎和tcp/ip协议的编写者没有任何的关系。发送协议的主机从上自下将数据按照协议封装,而接收数据的主机则按照协议从获得的数据包解开,最后拿到须要的数据。这种结构很是有栈的味道,因此某些文章也把tcp/ip协议族称为tcp/ip协议栈。数据库

一些基本的常识

在学习协议以前,咱们应该具有一些基本知识。编程

  • 互联网地址(ip地址)

    网络上每个节点都必须有一个独立的Internet地址(也叫作IP地址)。如今,一般使用的IP地址是一个32bit的数字,也就是咱们常说的IPv4标准,这32bit的数字分红四组,也就是常见的255.255.255.255的样式。IPv4标准上,地址被分为五类,咱们经常使用的是B类地址。具体的分类请参考其余文档。须要注意的是IP地址是网络号+主机号的组合,这很是重要。网络

  • 域名系统

    域名系统是一个分布的数据库,它提供将主机名(就是网址啦)转换成IP地址的服务。架构

  • RFC

    RFC是什么?RFC就是tcp/ip协议的标准文档,在这里咱们能够看到RFC那长长的定义列表,如今它一共有4000多个协议的定义,固然,咱们所要学习的,也就是那么十几个协议而已。socket

  • 端口号(port)

    注意,这个号码是用在TCP,UDP上的一个逻辑号码,并非一个硬件端口,咱们平时说把某某端口封掉了,也只是在IP层次把带有这个号码的IP包给过滤掉了而已。tcp

  • 应用编程接口

    如今经常使用的编程接口有socket和TLI。而前面的有时候也叫作“Berkeley socket”,可见Berkeley对于网络的发展有多大的贡献。svg