TCP/IP协议(一)
TCP/IP是Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求。在介绍TCP/IP协议之前,必须先说说OSI七层网络模型。
OSI网络模型
其实,TCP/IP协议并不是国际标准组织推出的标准协议,而是一个事实标准。国际标准组织推出的是OSI七层网络模型。如下图:
从最顶层的应用层到最底层的物理层,一共有7层,可以通过首字进行简单记忆,也就是“应、表、会、传、网、数、物”。它们的作用分别是:
物理层:电缆、光纤、无线等真实的物理介质,整个虚拟网络的真实载体。其内部进行传输的其实就是高低电平,分别表示1和0,表现形式就是“电压不稳”忽高忽低的电流。通过这种形式,类似101011001001的二进制串就被发送出去。
数据链路层:类似101011001001这样的数串,如果不进行编码,就没有任何意义,神仙都不知道它表示什么,或者你想表示什么,必须有一个统一的规定,统一的“翻译字典”,也就是编码方式来解析其中的意义。这就是数据链路层进行的主要工作。那么由谁来做这个工作呢?网卡!现代网络规定,每台计算机都必须有一块网卡(或虚拟网卡),通过它才能连接网络。每块网卡都必须有一个出厂设置世界唯一的MAC地址,也就是这块网卡的“身份证号”;
网络层:101011001001我们有了,编码方式我们有了,接下来该把数据往哪发呢?世界这么大,如何找到正确的地点?通过MAC地址,确定了每台主机的唯一位置,但我们并不知道如何到达那个位置,也就是不知道去那里的“路”。网络层就是为了解决路的问题。IP协议是网络层事实上的标准协议,它以类似111.111.111.111的方式,将全世界所有的因特网内的主机连在一起,并分别设定IP地址,通过路由的方式,数据包就能知道发往目的地址的正确路径。但这里还有个问题,那就是目标主机内可能同时运行了很多在进行网络通信的程序,那么如何找到正确的对应程序呢?通过端口port!一个IP地址+端口能够唯一确定一个服务程序;
传输层:通过上面三层的努力工作,数据已经送到目标手中,貌似一切ok了?但是目标服务却说“你这数据不合规范不是我想要的”,或者说“哎呀,我还没准备好,你怎么就来了呢?”计算机不是人,没有那么高的智商(至少目前没有),它有它自己规定好的业务逻辑,你必须在正确的时候正确的地点将正确的数据送给它,它才会正确的使用数据(好麻烦)!传输层就是负责在两者之间进行传输逻辑控制的协议。典型的代表就是TCP协议的三次握手连接和四次挥手断开逻辑;
应用层、表示层、会话层:这下是什么都ok了,只剩下数据的利用了。这三层都与应用、具体程序、交互界面等相关,对于用户,其实就是类似QQ、浏览器、迅雷之类的东西。运行是类似FTP/HTTP/SMTP等应用协议,那都是另外一个界面的内容了。
从网络数据包的就够来看,通过几层协议的封装,原始的数据会变成这样:MAC报头(IP报头(TCP报头(原始数据))),数据包变大变臃肿了很多,但还没法省略,少了任何一个都不行。数据包被发到目的地后,又像剥洋葱一样逐层被解包,最后还原成原始数据。
TCP/IP网络模型
网络的发展史是一部”混乱“向”秩序“发展的历史,是一部妥协与斗争的历史,是一部“民间”战胜“政府“的历史,有兴趣的可以看看专门的网络发展史文献。国际标准组织推出的OSI七层网络模型,看起来”高富帅“,实际上分得太细,比较复杂,有点冗余。而TCP/IP网络模型作为”民间“出身,只设置了四层网络,较为简单和实用,因此被各大国际厂商推广,成为行业事实标准,OSI七层网络模型则被用作学校进行网络基础教育的示范和典型。TCP/IP网络模型四层模型从根本上和OSI七层网络模型是一样的,只是合并了几层,具体如下:



在TCP协议中,最经典的是如下的建立连接和断开连接的过程:
TCP/IP三次握手建立连接

TCP/IP四次挥手关闭连接

TCP/IP协议(一)的更多相关文章
- 门面模式的典型应用 Socket 和 Http(post,get)、TCP/IP 协议的关系总结
门面模式的一个典型应用:Socket 套接字(Socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元.它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息: 连接使用的 ...
- OSI七层模型详解 TCP/IP协议
总结 OSI中的层 功能 TCP/IP协议族 应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等 表示层 数据格式化,代码转 ...
- TCP/IP协议(二)tcp/ip基础知识
今天凌晨时候看书,突然想到一个问题:怎样做到持续学习?然后得出这样一个结论:放弃不必要的社交,控制欲望,克服懒惰... 然后又有了新的问题:学习效率时高时低,状态不好怎么解决?这也是我最近在思考的问题 ...
- TCP/IP协议(一)网络基础知识
参考书籍为<图解tcp/ip>-第五版.这篇随笔,主要内容还是TCP/IP所必备的基础知识,包括计算机与网络发展的历史及标准化过程(简述).OSI参考模型.网络概念的本质.网络构建的设备等 ...
- TCP/IP协议三次握手与四次握手流程解析
原文链接地址:http://www.2cto.com/net/201310/251896.html TCP/IP协议三次握手与四次握手流程解析 TCP/IP协议的详细信息参看<TCP/IP协议详 ...
- 【原创】技术往事:改变世界的TCP/IP协议(珍贵多图、手机慎点)
1.前言 作为应用层开发人员,接触最多的网络协议通常都是传输层的TCP(与之同处一层的另一个重要协议是UDP协议),但对于IP协议,对于应用程序员来说更多的印象还是IP地址这个东西,再往深一点也就很难 ...
- HTTP协议—— 简单认识TCP/IP协议
大学没读计算机专业,所以很多的专业知识都不知道.既然已经从事了IT这个行业,就势必要去了解下网络底层,虽然实际工作中这些东西用不到.高楼大厦,起于平川.不积跬步,无以至千里,不积小流,无以成江海.我现 ...
- Http TCP/IP 协议的关系
转自:http://www.cnblogs.com/ymy124/archive/2012/03/18/2404958.html 项目要求Web服务是高安全级别,在选择.net remoting,we ...
- TCP/IP协议学习(四) 基于C# Socket的Web服务器---静态资源处理
目录 1. C# Socket通讯 2. HTTP 解析引擎 3. 资源读取和返回 4. 服务器测试和代码下载 Web服务器是Web资源的宿主,它需要处理用户端浏览器的请求,并指定对应的Web资源返回 ...
- TCP/IP协议学习(五) 基于C# Socket的C/S模型
TCP/IP协议作为现代网络通讯的基石,内容包罗万象,直接去理解理论是比较困难的:然而通过实践先理解网络通讯的理解,在反过来理解学习TCP/IP协议栈就相对简单很多.C#通过提供的Socket API ...
随机推荐
- Moccakids-Tangram Puzzle 限免啦!
圣诞前上线的App,Tangram Puzzle 限免,大家去下载玩玩. 介绍网站:http://www.mokamisu.com/ App Store:https://itunes.apple.co ...
- ElasticSearch + Kibana
关键词: 数据可视化 数据分析 数据爬虫 信息检索(搜索引擎) ElasticSearch是基于Lucene的分布式搜索引擎,提供多种插件及配套工具. 其中Kibana可以“关联”ES中的数据集,进行 ...
- Jmeter调试工具---HTTP Mirror Server
之前我介绍过Jmeter的一种调试工具Debug Sampler,它可以输出Jmeter的变量.属性甚至是系统属性而不用发送真实的请求到服务器.既然这样,那么HTTP Mirror Server又是做 ...
- 联通宽带家庭网关HG110-B破解步骤
先说说破解的意义,联通赠送的这个无线猫本身是带路由功能的,只是联通为了限制用户分享宽带,把拨号功能给禁用了,于是WIFI虽然能连上,但是不能用.我破解的目的就是达到让此路由既能有猫的拨号功能又能有路由 ...
- Mac Port 基本用法总结
Mac Port 基本用法总结 Mac Port 基本用法总结 1. Mac Port的下载地址 http://www.macports.org/install.php 2. Mac Port的说明文 ...
- android 透明度颜色值
100% — FF99% — FC98% — FA97% — F796% — F595% — F294% — F093% — ED92% — EB91% — E890% — E689% — E388% ...
- JS验证 只能输入小数点,数字,负数。
<script language="JavaScript" type="text/javascript"> function clearNoNum( ...
- std::bind和std::function
std::bind 用于绑定一个函数,返回另外一种调用方式的函数对象 ,可以改变参数顺序 和个数,特别是在多线程的程序中,经常用它将函数进行包装,然后打包发送给工作线程,让工作线程去执行我们的任务. ...
- 通过js看类似C#中的回掉
我认为并行有两种形式,第一种是异步,第二种是多线程,目的都是为了实现并行,只不过异步和多线程都是手段而已 第一种异步 异步,执行完函数或方法后,不必阻塞性地等待返回值或消息,只需要向系统委托一个异步过 ...
- Windows调试学习笔记:(二)WinDBG调试.NET程序示例
好不容易把环境打好了,一定要试试牛刀.我创建了一个极其简单的程序(如下).让我们期待会有好的结果吧,阿门! using System; using System.Collections.Generic ...