与TCP/IP协议的初次见面(一)
引言
最近LZ有了一点时间,于是便拿出TCP/IP的书本开始啃。开始的时候,啃起来枯燥无味,现在好不容易有点开窍,于是赶忙记录一下,生怕自己一转眼就给忘了。不过计算机系统原理就有点可惜了,最近一直没时间看,选来选去,还是觉得TCP更加重要一些,或者说现阶段更加重要一些。
好了,废话不多说,我们开始记录吧。
TCP/IP是什么
要讨论tcp/ip,就必须知道它究竟是什么东西。这是开始逐渐深入一个东西的前提,tcp/ip也不例外。
LZ用自己的话回答一下这个问题,tcp/ip是什么?
简单的说,tcp/ip就是一套规矩。两个计算机要互相通信,就得有规矩,一个非常普遍的例子就是发信件。想像一下,如果信件上面的地址和邮编等信息是随便写的,那么目的地的邮递员收到信件时,一定会一头雾水,不知道到底要送到哪。同样的,如果收件人是“额买瑞肯”,而你写的字是“拆泥渍”,对方肯定是看不懂的,所以双方的语言也要相通。
计算机之间要通信,也需要规矩,于是tcp/ip就出现了。tcp和ip分别是两个协议,而tcp/ip一般泛指一个协议族。这个协议族一共包含四层,分别是链路层,网络层,传输层以及应用层。其中tcp是传输层的协议,ip则是网络层的协议。
之所以分层,原因就像mvc框架的作用一样,是为了让专业的人做专业的事。还记得设计模式当中的单一职责原则吗,这里其实也正是这个原则的体现。每一层都只做自己应该做的事情,并且把它做好,这样有利于扩展和维护。
四层简介
接下来,LZ就自己的理解,给大家简单介绍一下各个分层。
链路层:这是最接近硬件的一层,也是俗称的“底层”。它主要指我们俗称的网卡和网卡驱动程序,网卡是硬件,驱动程序则负责控制网卡。链路层主要负责与传输介质(比如光纤)配合完成实际的数据传输工作。你可以把它想像成高速公路上可恶的收费站,每一条公路的入口和出口都有一个收费站,而这些收费站之间是有协议的,比如按路程收费。这些收费站就像网络接口一样,而公路则像光纤一样。
网络层:这一层凌驾于链路层之上,主要负责数据报在网络中的活动,比如该往哪走。这一层就像高速公路上的路标,路标决定了你每到一个路口应该怎么走。网络层恰恰就是做这件事,比如ip协议,其实就是制定一套规则,让数据按照这套规则可以找到目的地。
传输层:这一层已经比较接近我等屌丝了,它负责应用程序之间端到端的通信,这么说可能比较难理解。这个比较像物流中的一个场景,比如现在LZ在北京,并且在上海买了一个女朋友要送过来,那么过程应该是这样的。首先由上海的快递小哥把LZ的女朋友拿走,然后交给向北京出发运送货物的司机,接下来LZ的女朋友到北京后会被交给物流公司的统一发货处,最终由快递小哥负责把女朋友送到LZ手中。请注意,这个过程中,货车司机并不关心货物到底送到哪,他只管送到北京,而最终快递小哥需要把货物送给具体的收货人。这和网络层与传输层的关系类似,网络层只管把数据报从一个计算机送给另外一个计算机,具体是哪个进程的数据,网络层可不管,这便是传输层负责的事了。这里的端到端通信,其实就是指端口到端口的通信。
应用层:这一层与我等屌丝已经有肌肤之亲,可谓是再熟悉不过了。比如你天天要用的http协议,它就是应用层的一个协议。http定义了各种协议头,什么请求协议头,响应协议头,乱七八糟的。这些协议头都是干嘛的呢,既然是应用层,当然是给应用程序用的了。比如响应协议头中有文本格式这个头,它就定义了浏览器应该如何展示web服务器发回来的响应信息,比如xml,html还是什么其它的玩意。
四层小结
这么一看,其实tcp/ip协议族挺好理解的,接下来LZ还用上面物流的例子来说明。
链路层就是负责运输LZ女朋友的那个司机,他是实际负责运输工作的(也就是实际传输数据的工作)。网络层就是高速路上的路标,负责指引司机在高速上该如何走(也就是在网络上的活动),并让司机正确到达目的地。传输层则是快递小哥,负责在具体的发货人和收获人之间(也就是发送端口和接收端口)的接收。应用层就像是LZ女朋友的使用说明,这就是LZ和卖家之间(也就是应用程序之间)的事了。
文章花絮
本篇就到此为止吧,毕竟内容不在多,有精就行。只是为了更好的说明本文的内容,LZ牺牲了自己的形象,只是希望媳妇不要看到这篇文章。LZ发誓,本文中的所有例子都纯属虚构。
待续待续吧!
与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 ...
随机推荐
- mysql-1
接触mysql已经一年多了,但是平时很少用到,仅限于安装部署,最近在学习运维开发,需要用到数据库,于是买了一本mysql必知必会,给自己一个两个星期的时间,学完这本书, 写这一系列的博客,就是记录学习 ...
- MemSQL分布式架构介绍(一)
最近在了解MemSQL架构,看了些官方文档,在这里做个记录,原文在这里:http://docs.memsql.com/latest/concepts/distributed_architecture/ ...
- 烂泥:CentOS6.5光盘以及ISO镜像文件的使用
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 学习CentOS有一段时间了,在平时使用过程中.系统镜像以及光盘使用的比较多,这篇文章就从实用的角度介绍相关有关光盘与镜像文件的使用. 因为物理机相关的 ...
- iOS Build Active Architecture Only 属性的理解(及 not found for architecture i386 的解决方案)
最近做项目过程遇到一个问题: 涉及到这个属性:Build Active Architecture Only Yes .No的区别: 设置为yes,是只编译当前的architecture版本,是为了编译 ...
- (一)半小时开发一个APP
[前言] HPP是什么? HybirdApp的简称,详细介绍参见:HPP--让所有中小企业拥有自己的APP 说白了就是用html+css+js开发app,包括ios和android版本. HBuild ...
- POJ 2540 Hotter Colder --半平面交
题意: 一个(0,0)到(10,10)的矩形,目标点不定,从(0,0)开始走,如果走到新一点是"Hotter",那么意思是离目标点近了,如果是"Colder“,那么就是远 ...
- Vijos1451圆环取数[环形DP|区间DP]
背景 小K攒足了路费来到了教主所在的宫殿门前,但是当小K要进去的时候,却发现了要与教主守护者进行一个特殊的游戏,只有取到了最大值才能进去Orz教主…… 描述 守护者拿出被划分为n个格子的一个圆环,每个 ...
- UDP模式聊天
//client (前台) import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAd ...
- KSFramework常见问题:Lua脚本热重载,内存状态数据丢失?
Lua热重载 内存数据在重载后会丢失 KSFramework中,所有的UI Lua脚本是可以重载的.脚本中的一些内存数据,在重载后会丢失,比如: -- 记录一个UI界面被打开了多少次 function ...
- [No000056]你无法真正占有一个人,包括你的爱人,先生或太太、小孩,以及你自己....
从一出生,我们的双手就握的紧紧的,好像深知自己会失去什么 很多人迷信多子多孙才是福,老来才有依靠,但太多新闻告诉我们,很多人老了,子孙为了分家产,反而让他生不如死,死了还无法入土为安. 现实也告诉我们 ...