基础概念
一、为什么会有TCP/IP呢?
在世界上,各种各样的电脑运行着各不相同的操作系统为大家服务着,然而这些电脑在表达同一种信息的时候使用方法也是千差万别,就像好像不同的地区有不同的方言,沟通起来互相听不懂,让他们很难很好的交流。慢慢的计算机的使用者也意识到单兵作战不会发挥太多的作用,只有把它们联合起来,电脑才会发挥它最大的潜力,所以人们就想方设法的用网线把它们串联起来。
但是简单的连接在一起还是不能很好的解决沟通的问题,就好像两个人见了面,但说的东西还是互相听不懂,因而他们需要定义一些共同的语言来进行交流,所以TCP/IP就应运而生了,它就是作为电脑与电脑之间的交流的桥梁。TCP/IP不是一个协议,而是一个协议族的统称,里面包含了IP协议,IMCP协议,TCP协议,以及我们比较熟悉的HTTP协议,FTP协议等。
二、TCP/IP分层(内部结构)
TCP/IP协议按照层次分为以下四层。应用层、传输层、网络层、数据链路层。为什么要分层?一个层只负责一个层次的问题,如果出问题了,和其他的层次无关,只要维护这个层次也就好了。
TCP/IP协议层从上往下,层层包装,最上层的就是应用层,里面有我们常见的HTTP协议,FTP协议等等。第二层则使我们的传输层,有我们常用的TCP协议和UDP协议就在这个层次。第三次就是网络层,使用的是IP协议,它负责对数据加上IP地址和其他数据以确认传送的目标。第四层是数据链路层,这个层次为待传送的数据加上一个以太网协议头,并进行CRC编码,为最后的数据传输做准备。发送协议的主机从上自下将数据按照协议封装,而接受数据的主机则按照协议从得到的数据包解开,最后拿到需要的数据。这种结构非常有栈的味道,所以某些文章也把TCP/IP协议族称为TCP/IP协议栈。下图为TCP/IP的结构图
下面是TCP/IP通信数据流
三、TCP协议族里的常见协议
HTTP协议
HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则。HTTP目前协议的版本是1.1.HTTP是一种无状态的协议。
无状态是指Web浏览器和Web服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,然后Web服务器返回响应(response),连接就被关闭了,在服务器端不保留连接的有关信息。
** Http协议通信过程**
HTTP遵循请求(Request)/应答(Response)模型。Web浏览器向Web服务器发送请求,Web服务器处理请求并返回适当的应答。所有HTTP连接都被构造成一套请求和应答。
在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤:
(1) 建立TCP连接
(2) Web浏览器向Web服务器发送请求
(3) Web浏览器发送请求头信息
浏览器发送其请求之后,还要以头信息的形式向Web服务器发送其它信息,之后浏览器发送了一空白行来通知服务器,它已经结束了该头信息的发送。
(4) Web服务器应答
客户机向服务器发出请求后,服务器会客户机回送应答,
HTTP/1.1 200 OK
应答的第一部分是协议的版本号和应答状态码
(5) Web服务器发送应答头信息
(6) Web服务器向浏览器发送数据
Web服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据。
(7) Web服务器关闭TCP连接
般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,如果浏览器或者服务器在其头信息加入了这行代码:
Connection:keep-alive
TCP连接在发送后将仍然保持打开状态。
IP协议
IP(Internet protocol),这里的IP不是值得我们通常所说的192.168.1.1.这个IP指的是一种协议,而后面的数字值得是IP地址。IP协议的作用在于把各种数据包准确无误的传递给对方,其中两个重要的条件是IP地址,和MAC地址(Media Access Control Address)。由于IP地址是稀有资源,不可能每个人都拥有一个IP地址,所以我们通常的IP地址是路由器给我们生成的IP地址,路由器里面会记录我们的MAC地址。
使用 ARP 协议凭借 MAC 地址进行通信
IP 间的通信依赖 MAC 地址。在网络上,通信的双方在同一局域网(LAN)内的情况是很少的,通常是经过多台计算机和网络设备中转才能连接到对方。而在进行中转时,会利用下一站中转设备的 MAC 地址来搜索下一个中转目标。这时,会采用 ARP 协议(Address Resolution Protocol)。ARP 是一种用以解析地址的协议,根据通信方的 IP 地址就可以反查出对应的 MAC 地址
TCP协议:
如果说IP协议是找到对方的详细地址。那么TCP协议就是把安全的把东西带给对方。各有分工,互不冲突。
按层次分,TCP属于传输层,提供可靠的字节流服务。什么叫字节流服务呢?这个名字听起来让人不知所以然,下面听下我通俗的解释。所谓的字节流,其实就类似于信息切割。比如你是一个卖自行车的,你要去送货。安装好的自行车,太过庞大,又不稳定,容易损伤。不如直接把自行车拆开来,每个零件上都贴上收货人的姓名。最后送到后按照把属于同一个人的自行车再组装起来,这个拆解、运输、拼装的过程其实就是TCP字节流的过程。
DNS协议
DNS(Domain names System) 和HTTP协议一样是处于应用层的服务,提供域名到IP地址之间的解析服务。
互联网之间是通过IP地址通信的,但是IP地址并不符合认得记忆习惯,人喜欢记忆有意义的字词。所以DNS服务就为了解决这个问题而生了。其实很好理解,形如我们电脑中host文件。****192.168.1.11 roverliang.com ****
当我们访问roverliang.com 的时候,电脑便不会去外网服务器上查询了,直接去访问192.168.1.111。这是一个简单的域名劫持,足以说明DNS的涵义了。
下面是我们访问一个网页,各种协议在里面起的作用。
总结:以上是TCP/IP协议(协议族)的简单介绍,主要是说明TCP/IP协议族在整个通信过程中,各个协议之间的关系与作用。