IP、TCP和DNS与HTTP的密切关系
看了上一篇博文的发表时间,是7月22日,现在是10月22日,已经有三个月没写博客了。这三个月里各种忙各种瞎折腾,发生了很多事情,也思考了很多问题。现在这段时间开始闲下来了,同时该思考的事情也思考清楚了,所以打算继续写博客,分享我的工作上的经验总结和自己所接触的技术,让想多了解点技术的博友们可以互相交流和学习。
好了,废话不多说,直接进入主题,本次打算分享HTTP协议系列的相关文章,适合初学者学习,高手或者大神可以绕道,当然也可以一起交流交流。
这次先讲讲IP、TCP和DNS与HTTP的密切关系。
知识点
一、IP协议的概念与作用
IP的概念:
英文为Internet Protocol,翻译成网际协议,位于网络层。
这个网际协议这个名字听起来有点夸张,但事实就是这样,因为几乎所有使用网络的系统都会用到IP协议。TCP/IP协议族中的IP指的是网际协议,它在协议名称中占据了一半的位置,从这可以知道IP协议是多么的重要。这里我们需要注意两个概念,IP和IP地址,可能有人会把它搞混。IP其实是一种协议的名称,而IP地址是一个地址。
IP的作用:
把各种数据包传送给对方。如果要保证确定传送到对方那里,则需要满足各类条件,其中最重要的两个条件是IP地址和MAC地址。
(1)IP地址:指明了节点被分配到的地址
(2)MAC地址:是指网卡所属的固定地址
(3)区别:IP地址可变换,但MAC地址基本上不会更改。
如果你想要保证数据包传送到对方去,那就必须满足各种条件,其中最重要的两个条件是IP地址和MAC地址。
什么是IP地址呢?IP地址指明了节点被分配到的地址。而什么又是MAC地址呢? MAC地址的网卡所属的固定地址。形象一点来说,MAC地址就像我们的身份证号,每一个MAC地址是唯一的,并且基本不会改变。这里我为什么说基本不会改变呢?因为目前我们可以通过软件修改,也就是用软件来修改MAC地址。IP地址是可以和MAC地址进行配对的。
我们来了解一下使用ARP协议凭借MAC地址进行通信
什么是ARP协议呢?ARP协议它是一种用以解析地址的协议,我们只要知道通信方的IP地址,就可以反查出对应的MAC地址。也就是说IP间的通信依赖于MAC地址。
我们来看一下这个图:
在网络上,通信的双方通常都是要经过多台计算机或者网络设备中转才能连接到对方。而在进行中转时,会利用下一站中转设备的MAC地址来搜索下一个中转目标,这时我们就是靠ARP协议来进行处理。
二、TCP协议的概念与作用
(1)TCP的概念:TCP英文为Transmission Control Protocol ,翻译成传输控制协议,位于传输层。
(2)TCP有什么作用呢?它是提供可靠的 字节流服务。
(3)什么是字节流服务?所谓的字节流服务指的是,为了方便传输,将大块数据分割成 以报文段为单位的数据包 进行管理
(4)为何强调可靠呢?因为它能够把数据准确可靠地传送给对方。总而言之,TCP协议就是为了 更容易传送大数据 才把数据分割,而且TCP协议能够确认数据 最终是否送达对方。
(5)TCP协议如何才能保证提供可靠的服务?它采用了三次握手策略。 也就是用TCP协议 把数据包送出去后,它不会对传送后的情况置之不理,它一定会想对方确认 是否成功送达。
三、TCP协议的三次握手过程
我们来看一下这个图:
握手过程中使用了TCP的标志-SYN和ACK。发送端首先发送一个S带SYN标志的数据包给对方。接收端接到后,就会回传一个带有SYN/ACK标志的数据包 以表示传达确认信息。最后,发送端再回传一个带ACK标志的数据包 给接收端, 此时代表“握手”结束。除了三次握手来保证通信的可靠性,TCP协议还有其他各种手段来保证通信的可靠性,这里我就不过多讲解了,大家可以自己翻阅相关资料去了解下。
四、DNS的概念与作用
(1)DNS的概念:英文为Domain Name System ,翻译成域名系统,位于应用层。
(2)DNS有什么作用呢? 它是提供域名到IP地址之间的解析服务。
我们平时访问一个网站,通常都是使用主机名或域名来访问,而不是直接通过IP地址来访问。为什么我们不用IP地址去访问呢?因为IP地址是一组纯数字,比较难记。比如说,我们极客学院的IP地址为121.42.104.52,而域名为www.itcen.cn。 如果我们用IP地址去访问网站,那是很难记得住的。而用域名就比较容易记住了。但是呢,计算机和人不一样,你要计算机去理解名称,相对来说就比较困难了。计算机比较擅长处理一长串数字。为了解决这个问题,就有了DNS服务。DNS协议它是提供 通过域名 来查找IP地址,或者逆向 从IP地址反查域名 的服务。
五、HTTP与TCP、IP和DNS的关系
最后我们通过一张图来了解一下HTTP与TCP、IP和DNS的关系,看看它们在通信的过程中各种发挥了什么作用。
我来拿我的博客来举个例子:
首先是,我想访问网站,将域名发送给DNS去解析,DNS解析后将网站的IP地址返回给客户端,然后通过IP地址发起HTTP请求。HTTP此时的作用是 生成针对目标WEB服务器(我们这里指的是网站的服务器)的HTTP请求报文,然后将请求报文传送给传输层,此时为了方便通信,TCP会将HTTP请求报文 分割成报文段,这些报文段会有一个序号,这里的报文段哪一个先发送哪一个先到达,它们是按序传送的。只要建立起TCP连接,客户端与服务器之间的报文交换就不会丢失,不会被破坏,也不会在接收时出现错序。接着到了网络层,此时IP协议的职责是,搜索对方的地址,一边中转一边传送。然后找到了服务器的位置,此时服务器的传输层中 TCP的职责是 接收到对方传送过来的报文段后,对其进行重组,这里的重组是按序号进行重组的。然后到了服务器的应用层,HTTP会对客户端请求的内容进行处理。处理完后,服务器同样会利用TCP/IP通信协议向客户端进行回传响应。最后客户端收到响应后,将内容输出页面显示。即完成了一次HTTP事务。
如果此博文中有哪里讲得让人难以理解,欢迎留言交流,若有讲解错的地方欢迎指出。
如果您觉得您能在此博文学到了新知识,请为我顶一个,如文章中有解释错的地方,欢迎指出。
互相学习,共同进步!
IP、TCP和DNS与HTTP的密切关系的更多相关文章
- http协议,tcp协议,ip协议,dns服务之前的关系和区别
长期以来都有一个问题,大家都在说http协议,tcp协议,ip协议,他们之间到底什么区别,有什么用,没人告诉我,最近看了这本<图解http>明白了一些,以下图片摘自这本书 一.理解一个传输 ...
- 两张图说明http协议,tcp协议,ip协议,dns服务之间的关系和区别
一.理解一个传输流再去扩展 用http举例来说,首先作为发送端的客户端在应用层(http协议)发出一个想看某个web页面的http请求. 接着,为了传输方便,在传输层(tcp协议)把从应用层处收到的数 ...
- [转帖]IP /TCP协议及握手过程和数据包格式中级详解
IP /TCP协议及握手过程和数据包格式中级详解 https://www.toutiao.com/a6665292902458982926/ 写的挺好的 其实 一直没闹明白 网络好 广播地址 还有 网 ...
- Windows下使用命令行设置ip地址的DNS服务器
使用命令行或者编写bat批处理设置网络连接的IP地址以及DNS服务器地址有时候会比手动更加方便,IP地址和DNS的设置一般是配合的,常用到的几个状态是: 1.IP地址动态获取,DNS也动态 2.IP地 ...
- IP, TCP, and HTTP--reference
IP, TCP, and HTTP Issue #10 Syncing Data, March 2014 By Daniel Eggert When an app communicates with ...
- c#修改本地连接工具 ip地址,dns,网关,子网掩码
//Form1类后台 #region 加载配置文件中的信息 /// <summary> /// 加载配置文件中的信息 /// </s ...
- TCP/IP、Http、Socket的区别与关系
--TCP/IP.Http.Socket的区别与关系 --------------------------------------2014/05/14 网络由下往上分为 物理层.数据链路层.网络层.传 ...
- Linux - ubuntu 设置固定ip和设置dns
ubuntu 设置固定ip和设置dns 1.ifconfig 查看网卡名称 root@jiqing-virtual-machine:~# ifconfig ens32 Link encap:以太网 硬 ...
- boost::asio::ip::tcp实现网络通信的小例子
同步方式: Boost.Asio是一个跨平台的网络及底层IO的C++编程库,它使用现代C++手法实现了统一的异步调用模型. 头文件 #include <boost/asio.hpp> 名空 ...
随机推荐
- Diabetic Retinopathy Winner's Interview: 1st place, Ben Graham
Diabetic Retinopathy Winner's Interview: 1st place, Ben Graham Ben Graham finished at the top of the ...
- php设计模式之六大设计原则
1.单一职责 定义:不要存在多于一个导致类变更的原因.通俗的说,即一个类只负责一项职责. 场景:类T负责两个不同的职责:职责P1,职责P2.当由于职责P1需求发生改变而需要修改类T时,有可能会导致 ...
- ul标签的高度为0
由于项目中使用ul+li的布局方式,在ie8.chrome浏览器中,包裹浮动的li元素的外层ul高度为0,ie7浏览器和ie8兼容模式显示正常,这是典型的浏览器兼容性问题. 解决办法: 第一种:设置u ...
- iframe中的历史记录问题汇总及解决方案[转]
在做页面统计的时候遇到了两个问题: 1.包含iframe的页面,在IE下按后退按钮不能刷新主页面.隐藏Iframe的src是统计程序的url,每点一次后退,就会发出一次页面加载时间请求. 2.由js动 ...
- Personal idea
我的设想是在android上开发一款应用程序,整体上是一个指南针的样式,或许你可以称之为一个圆盘,在不同的场景下可以作为不同的功能,指南针,游戏转盘,数字转盘等等.界面可以在不同的情境下更换样式.
- 配置多个ssh-key
搞了三天没搞出来,还在男朋友面前哭了一场,真心觉得我只该吃屎,我好没用.哎.. 首先在上一篇记录了如何生成ssh-key,并使本地可以通过ssh的方式克隆和推送项目.但如果你有个github账号,有个 ...
- XSS报警机制(前端防火墙:第二篇)
XSS报警机制(前端防火墙:第二篇) 在第一章结尾的时候我就已经说了,这一章将会更详细的介绍前端防火墙的报警机制及代码.在一章出来后,有人会问为什么不直接防御,而是不防御报警呢.很简单,因为防御的话, ...
- 2016.07.13-map的使用(以leetcode1-Two Sum为例)
map的使用 1.unordered_map和map的区别 2.如何用 3.for (int a : nums1) 4.to_string() 5.map的应用 1.unordered_map和map ...
- Testbench学习——$fopen/$display/$fclose
昨天在用Vivado写Testbench顶层时,为了以后便于数据的存储导出分析,需要用的文件数据记录的功能,于是,下面谈谈$fopen/$display/$fclose这三者的用法. $fopen—— ...
- 【转】WCF光芒下的Web Service
WCF光芒下的Web Service 学习.NET的开发人员,在WCF的光芒照耀下,Web Service 似乎快要被人遗忘了.因为身边做技术的人一开口就是WCF多么的牛逼!废话不多,本人很久不写博客 ...