原文地址(http://www.cnblogs.com/roverliang/p/5176456.html)

1、什么是TCP/IP 

如果要了解一个人,可以从他归属的集体聊起来。我们的HTTP协议就属于TCP/IP协议家族中的一员,了解HTTP协议再整个网络流程中的地位,也能更加充分的理解HTTP协议。

要想了解什么是TCP/IP协议,就要知道为什么有这个协议。中国人和中国人说话,要遵循汉语的的语法结构,使用汉语的发音。当我们和外国人交流时,就要适用外国的语言了,遵循外国的语法机构和发音。其实这就是一种协议,只不过我们称之为语言。计算机再这方面体现的更为直观,两台机器之间该如何通信呢,就需要制定各种各样的协议了。例如:文件传输适用TCP协议。域名系统适用DNS协议。有了些协议的存在,各种数据流按照规则传输,计算机之间得意通信。

TCP/IP协议是一个协议集合。大家叫的时候方便说,所以统称为TCP/IP。TCP/IP协议族中有一个重要的概念是分层,TCP/IP协议按照层次分为以下四层。应用层、传输层、网络层、数据链路层。为什么要分层?这就如同邓小平1978年的大包干,责任到人。一个层只负责一个层次的问题,如果出问题了,和其他的层次无关,只要维护这个层次也就好了。其实编程语言里也能体现这个分层理论,即封转性、隔离。这里不再延伸细谈。下面我是制作的一个简图。(七层也对:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层)

下面是从网络上找到的TCP/IP通信数据流

2、HTTP 关系密切的协议 : IP、TCP 和 DNS

IP协议:IP(Internet protocol),这里的IP不是值得我们通常所说的192.168.1.1.这个IP指的是一种协议,而后面的数字值得是IP地址。IP协议的作用在于把各种数据包准确无误的传递给对方,其中两个重要的条件是IP地址,和MAC地址(Media Access Control Address)。由于IP地址是稀有资源,不可能每个人都拥有一个IP地址,所以我们通常的IP地址是路由器给我们生成的IP地址,路由器里面会记录我们的MAC地址。而MAC地址是全球唯一的,除去人为因素外不可能重复。举一个现实生活中的例子,IP地址就如同是我们居住小区的地址,而MAC地址就是我们住的那栋楼那个房间那个人。关于MAC地址,如果我没讲清楚,可点击连接,查看百度。以下内容摘抄自《图解HTTP》

使用 ARP 协议凭借 MAC 地址进行通信

IP 间的通信依赖 MAC 地址。在网络上,通信的双方在同一局域网(LAN)内的情况是很少的,通常是经过多台计算机和网络设备中转才能连接到对方。而在进行中转时,会利用下一站中转设备的 MAC 地址来搜索下一个中转目标。这时,会采用 ARP 协议(Address Resolution Protocol)。ARP 是一种用以解析地址的协议,根据通信方的 IP 地址就可以反查出对应的 MAC 地址

感兴趣的可以参考ARP协议(Address Resolution Protocol),题外话,从文档上来看,百度百科要比维基百科介绍的好的多。

 你向另外一台电脑发送一条信息,怎么再茫茫人海中瞬间找到对方,以下是图示:

TCP协议:如果说IP协议是找到对方的详细地址。那么TCP协议就是把安全的把东西带给对方。各有分工,互不冲突。

按层次分,TCP属于传输层,提供可靠的字节流服务。什么叫字节流服务呢?这个名字听起来让人不知所以然,下面听下我通俗的解释。所谓的字节流,其实就类似于信息切割。比如你是一个卖自行车的,你要去送货。安装好的自行车,太过庞大,又不稳定,容易损伤。不如直接把自行车拆开来,每个零件上都贴上收货人的姓名。最后送到后按照把属于同一个人的自行车再组装起来,这个拆解、运输、拼装的过程其实就是TCP字节流的过程。

我们看下严谨的学术表达是怎样的:

所谓的字节流服务(Byte Stream Service)是指,为了方便传输,将大块数据分割成以报文段(segment)为单位的数据包进行管理。而可靠的传输服务是指,能够把数据准确可靠地传给对方。一言以蔽之,TCP 协议为了更容易传送大数据才把数据分割,而且 TCP 协议能够确认数据最终是否送达到对方。

为了确保信息能够确保准确无误的到达,TCP采用了著名的三次握手策略(three-way handshaking).下面我写一段对话来模拟下这三次握手。

DNS:DNS(Domain names System) 和HTTP协议一样是处于应用层的服务,提供域名到IP地址之间的解析服务。

互联网之间是通过IP地址通信的,但是IP地址并不符合认得记忆习惯,人喜欢记忆有意义的字词。所以DNS服务就为了解决这个问题而生了。其实很好理解,形如我们电脑中host文件。

192.168.1.11       roverliang.com

当我们访问roverliang.com 的时候,电脑便不会去外网服务器上查询了,直接去访问192.168.1.111。这是一个简单的域名劫持,足以说明DNS的涵义了。

下面是我们访问一个网页,各种协议在里面起的作用。

HTTP协议—— 简单认识TCP/IP协议(转载)的更多相关文章

  1. HTTP协议—— 简单认识TCP/IP协议

    大学没读计算机专业,所以很多的专业知识都不知道.既然已经从事了IT这个行业,就势必要去了解下网络底层,虽然实际工作中这些东西用不到.高楼大厦,起于平川.不积跬步,无以至千里,不积小流,无以成江海.我现 ...

  2. 【转】HTTP协议—— 简单认识TCP/IP协议

    转自:www.cnblogs.com/roverliang/p/5176456.html 大学没读计算机专业,所以很多的专业知识都不知道.既然已经从事了IT这个行业,就势必要去了解下网络底层,虽然实际 ...

  3. 简单认识TCP/IP协议

    HTTP协议—— 简单认识TCP/IP协议 本文转自: https://www.cnblogs.com/roverliang/p/5176456.html   大学没读计算机专业,所以很多的专业知识都 ...

  4. 简单理解TCP/IP协议

    一.什么是TCP/IP TCP/IP是一个协议族,是因为TCP/IP协议包括TCP.IP.UDP.ICMP.RIP.TELNETFTP.SMTP.ARP.TFTP等许多协议,这些协议一起称为TCP/I ...

  5. RTSP RTSP(Real Time Streaming Protocol),RFC2326,实时流传输协议,是TCP/IP协议体系中的一个应用层协议

    RTSP 编辑 RTSP(Real Time Streaming Protocol),RFC2326,实时流传输协议,是TCP/IP协议体系中的一个应用层协议,由哥伦比亚大学.网景和RealNetwo ...

  6. 协议系列之TCP/IP协议

    根据前面介绍的几种协议,将IP协议.TCP协议.UDP协议组合起来,于是便有了TCP/IP协议.现在很多的应用的通信都是建立在TCP/IP协议的基础上,运用非常广泛,很有必要对其学习一下. 打个不太恰 ...

  7. 简单概述 TCP/IP 协议簇

    前言 通信协议是计算机之间交换信息所使用的一种公共语言的规范和约定.Internet 的通信协议包含 100 多种相互关联的协议,但是 TCP 和 IP 是其中两个最核心的关键协议,所以把 Inter ...

  8. 网络中常用的各种协议(针对TCP/IP协议组)

    网络层: ip协议->网络互连协议 用途:将多个包在网络中联系起来,传输数据包(不可靠传输),最基本功能就是寻址和分段功能,不提供端到端,路由到路由的确认,不提供重发和流量控制.是计算机网络能狗 ...

  9. TCP/IP协议精华笔记

    1.简介 TCP/IP协议并非单指TCP协议.IP协议,它是一组包括TCP协议和IP协议,UDP(User Datagram Protocol)协议.ICMP(Internet Control Mes ...

随机推荐

  1. 【贪心】【后缀自动机】XIII Open Championship of Y.Kupala Grodno SU Grodno, Saturday, April 29, 2017 Problem E. Enter the Word

    题意:给你一个串,让你从左到右构造这个串,一次操作可以直接在当前串后面添加一个任意字符,或者拷贝当前串的任意一个子串到当前串的后面.问你最少要多少次操作才能构造出这个串. 从前向后贪心,从当前已构造的 ...

  2. python基础之类与对象,继承与派生

    类与对象 对象的本质也就是一个名称空间而已,用于存放自己独有的属性,而类中存放的是对象共有的属性. __init__会在调用类时自动触发 调用类时发生两件事: 1.创建一个空对象stu1 2.自动触发 ...

  3. [POI2008]Triangles

    题目大意: 平面直角坐标系上有n个点,问以这n个点为顶点的不同的三角形的面积和是多少? 思路: 很容易想到一个O(n^3)的暴力,枚举三个点,用海龙公式求一下面积和即可,这样做是40分. 标算的复杂度 ...

  4. Problem D: 判断上否上三角矩阵

    #include<stdio.h> int main() { ][],i,j; while(scanf("%d",&n)!=EOF) { ; //flag用来做 ...

  5. 装载 | Eclipse中搭建最新版本的Android开发环境

    文章目录 准备工作 下载文件 下载JDK并配置系统变量环境 下载安装Eclipse 下载Android SDK 下载ADT插件 使用下载好的软件搭建Android开发环境 安装Android的SDK ...

  6. Delphi DevExpress下载

    http://download.csdn.net/detail/wozengcong/8395285#comment

  7. emailautocomplete

    CSS代码: .emailist{border:1px solid #bdbdbd; border-radius: 4px; background-color:#fff; color:#666; fo ...

  8. 每天5分钟玩转Docker

    总结的这个八爪鱼图,不懂的时候随时翻翻书.....

  9. Linux下的基础命令

    在容器环境中很多时候要确定底层操作系统是什么和什么版本,网上找了一把,发现了一些比较有用的命令,从其他地方转过来,参考 # uname -a # 查看内核/操作系统/CPU信息 # head -n / ...

  10. iOS:延时执行的三种方式

    延时执行的三种方式:performSelectorXXX方法.GCD中延时函数.创建定时器   第一种方式:NSObject分类当中的方法,延迟一段时间调用某一个方法 @interface NSObj ...