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> 名空 ...
随机推荐
- 并查集:POJ No1703 Find them, Catch them
题目链接:http://poj.org/problem?id=1703 题意:两个坏蛋属于不同的组织,给出两个坏蛋判定是否一个组织. 题解:已知每次输入的两个帮派人员 x, y; 合并 (x, y + ...
- 【CodeForces】961 F. k-substrings 字符串哈希+二分
[题目]F. k-substrings [题意]给定长度为n的串S,对于S的每个k-子串$s_ks_{k+1}...s_{n-k+1},k\in[1,\left \lceil \frac{n}{2} ...
- 并发编程(三) IO模型
五 IO模型 常用的IO模型有4种: 阻塞IO 非阻塞IO IO多路复用 异步IO 不常用的有: 驱动信号 5.1 阻塞IO.非阻塞IO 阻塞IO:进程不能做其他的事情 非阻塞IO:等待数据无阻塞 阻 ...
- ASP.NET 网站部署到IIS上如何进行调试
1:在一个网站成功部署后,有可能会遇到一些错误,但是又不能直接看出错误源(如果能在源程序里下断点进行调试就好了,这样就能准确的找出错误代码),下面介绍如何在一个已经部署的网站上进行断点调试(前提有网站 ...
- [转]C++ 取代switch的三种方法
1.常规switch enum EnumType { enumOne, enumTwo, enumThree }; void showMessage(int type) { switch(type) ...
- C++ Qt多线程 TcpSocket服务器实例
服务器: incomming incomming.pro #------------------------------------------------- # # Project created ...
- 在JS数组指定位置插入元素
很多与数组有关的任务听起来很简单,但实际情况并不总是如此,而开发人员在很多时候也用不到他.最近我碰到了这样一个需求: 将一个元素插入到现有数组的特定索引处.听起来很容易和常见,但需要一点时间来研究它. ...
- http、https 等 常用默认端口号
⑴. HTTP协议代理服务器常用端口号:80/8080/3128/8081/9080⑵. SOCKS代理协议服务器常用端口号:1080⑶. FTP(文件传输)协议代理服务器常用端口号:21⑷. Tel ...
- equals方法变量和常量位置区别
对于字符串比较,我的习惯用法是 变量.equals(常量) 比如: a.equals("a") 今天看视频才知道变量在前面与后面有很大影响,正确的写法是常量放前面(可以 ...
- C# 浅谈 接口(Interface)的作用
继承"基类"跟继承"接口"都能实现某些相同的功能,但有些接口能够完成的功能是只用基类无法实现的 1.接口用于描述一组类的公共方法/公共属性. 它不实现任何的方法 ...