TCP/IP 和 HTTP 的区别和联系是什么?

HTTP是TCP/IP协议族的一个子集,我们平常使用的网络(互联网)都是在TCP/IP协议族上运作的。首先对TCP/IP协议族进行一个大概阐述来便于理解HTTP。

TCP/IP协议族
计算机各网络设备之间进行通信时,双方必须基于相同的方法,如通信时先由哪一边的目标先发起通信、通信时使用哪种语言、通信如何结束等,都需要事先确定。不同的硬件、操作系统之间的通信都需要一种规则来进行管理和约束,我们就把这种规则称为协议。

协议不仅可以管理和规定通信的方式,从电缆的规格到IP地址的选定方法,再到web端的页面显示需要处理的步骤等都是协议来进行约束和控制的。而TCP/IP协议族就负责把这些互联网相关的协议集合起来的总体,但也有说法说TCP/IP就只是指TCP和IP协议。

TCP/IP分层原理
TCP/IP协议族里最重要的一点就是分层思想的运用,按层次分为以下四层:应用层、传输层、网络层和数据链路层。分层思想就是把通信的这整个过程划分成几个部分,如果采用分层的思想设计,把互联网按照一个协议来进行统筹,但我们进行某个地方的改动时,就必须把所有部分整体替换掉。而如果采用了分层的思想,那么我们只需要把变动的层修改或者替换掉,而每个层之间的接口规划好后,每个层的内部设计就相互独立,互不影响了。TCP/IP

各层介绍如下
应用层:应用层是直接与用户进行交互的层,它决定了向用户提供的应用服务和通信的活动。应用层包含所有的高层协议,包括:虚拟终端协议(TELNET)、文件传输协议(FTP)、电子邮件传输协议(SMTP)、域名服务(DNS)、网上新闻传输协议(NNTP)和超文本传送协议(HTTP)等。

传输层:使源端和目的端机器上的对等实体可以进行会话。在这一层定义了两个端到端的协议:传输控制协议(TCP)和用户数据报协议(UDP)。TCP是面向连接的协议,它提供可靠的报文传输和对上层应用的连接服务。

网络层:是整个体系结构的关键部分,其功能是使主机可以把分组发往任何网络,并使分组独立地传向目标。这些分组可能经由不同的网络,到达的顺序和发送的顺序也可能不同。高层如果需要顺序收发,那么就必须自行处理对分组的排序。

链路层:用来处理连接网络的硬件部分,包括控制操作系统、硬件的设备驱动、NIC(Network Interface Card,网络适配器,即网卡),及光纤等物理可见部分(还包括连接器等一切传输介质)。硬件上的范畴均在链路层的作用范围内。

客户端和服务器之间可以相互发送信息,所以上述图示红色箭头是双向的。我们以HTTP举例来阐述从客户端向服务器发送请求的过程:

首先,作为发送端的客户端,在应用程序发出一个想看某个Web网页的http请求,接着为了传输方便,在传输层把从应用层收到的数据进行分割(从应用层收到的数据量可能较大),并在各个报文上打上标记序号和端口号,然后转发给网络层。在网络层增加作为通信目的地的mac地址后转发给链路层,最后链路层把数据打包成一帧帧的数据帧通过物理线路发送出去。

注:接收端在接收数据时,各报文到达的次序不会按排序好的次序依次到达,所以标记序号的目的是使接收端在接收时可以按次序把数据排好。而标记端口的目的是为了识别不同的应用层的应用服务。

而接收端在接收到数据时会根据每一层的标记来把数据发送到指定机器上、应用上,并不断“拆包”,最后当HTTP请求数据发到应用层的指定应用时才完成一次数据的请求任务。

IP协议:负责数据传输的协议
按层次分,IP是整个TCP/IP协议族的核心,也是构成互联网的基础。IP位于TCP/IP模型的网络层(相当于OSI模型的网络层),它可以向传输层提供各种协议的信息,例如TCP、UDP等;对下可将IP信息包放到链路层,通过以太网、令牌环网络等各种技术来传送。

IP协议的作用是把各个数据包传送到对方,而为了确保传送能到达,需要满足各类条件,其中两个最重要的条件是IP地址和MAC地址。IP地址指明了节点在网络中被分配的地址,MAC地址则是指明了网卡所属的固有地址。

需要明白的一点是:没有人能够全面掌握互联网中的传输状况,也就是当HTTP客户端向服务器发送请求时,谁也不能直接制定出传送的路径和经过哪些路由中转站,传输线路的路由选择是由网络的拥堵状况来动态分配的。

IP地址的工作过程:IP间的通信依赖MAC地址。在网络上通信时,通信的双方在同一个局域网的情况是非常少的,通常要经过网络中的很多中转站。简单来说,数据传输时,每一个中转站都会根据“要最终到达的IP地址”和当前的网络状况来确定“下一站要到达的中转”的IP,然后利用ARP协议解析“下一站要到达的中转”的IP得出“下一站要到达的中转”的MAC地址,然后通过MAC地址传送到“下一站要到达的中转”,就这样不断根据网络状况来确定下一站,最后直达“要最终到达的IP地址”的地方,即传送结束。

首先,发送端在TCP层时把报文段的首部标志位SYN置为1,表示发送端向接收端请求连接;接着,接收端在收到连接请求后,给发送端回复,即把TCP的首部标志位SYN和ACK都置为1给发送端回复;最后发送端接到了客户端的回复后,发送端也给接收端一个回复的回复,即把TCP的首部标志位ACK置为1给接收端发送过去。

假如在握手的过程中某个阶段莫名中断了,TCP协议会再次以相同的顺序发送相同的数据包。

注:SYN标志位为1表示连接请求,ACK是acknowledge缩写,如果ACK值为1表示应答的意思。

DNS服务:负责域名解析的服务
DNS服务也是一种应用层的服务协议,它提供的是域名和IP地址间的解析服务。计算机(或服务器)可以被赋予IP地址,也可以被赋予主机名和域名。比如我们常用的百度服务器的域名http://www.baidu.com就是一个域名。

域名来请求服务是更适于人类的记忆习惯的,而如果让计算机去处理名称就显得非常困难,因为计算机更适合处理一长串的数字。

为了解决上述问题,DNS服务应运而生,DNS可以实现通过域名来解析出对应的IP或者逆向从IP解析域名。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值