豹哥小课堂,好了不开玩笑了(什么小课堂,哈哈哈)。豹哥将会将我会的知识简单易懂的写出来,希望大家能用到,当然只是针对想学习的基础薄弱的,大牛就算了,希望里边有错误的话大家批评指正,毕竟我也是人生路上的小学生。
我在想如何下手来讲这个问题,毕竟要考虑那些0基础学习网络的同学,不能刚开始上来就整协议,怕是会懵逼。
因为我刚开始学习网络就是这样,懵逼的不行不行的,所以吸取经验教训来和大家一起讨论交流。
OSI模型
为什么要说这个?因为要想知道TCP/IP就离不开OSI模型,两个是相辅相成的。(这七层我直接复制粘贴百度了,然后把里边难懂的给大家改一下,好吧我承认我懒,但是人家写的的确比我好啊,为什么不用?)
应用层 (最高层 相当于一个楼房的第七层)
网络服务与最终用户的一个接口。 协议有: HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP
好吧它写的也太简单了,我补充一下。 应用层是OSI 和TCP/IP协议的最高层,包括所有的高层协议,并不断有新的协议加入。 应用层的具体任务就是规定应用进程在通信时所遵循的协议。
表示层
数据的表示、安全、压缩。(在五层模型里面已经合并到了应用层) 格式有, JPEG、ASCll、DECOIC、加密格式等
会话层
建立、管理、终止会话。(在五层模型里面已经合并到了应用层) 对应主机进程,指本地主机与远程主机正在进行的会话
传输层 (中介,负责网络功能的低三层和高三层)
定义传输数据的协议端口号,以及流控和差错校验。 协议有:UDP (用户数据报协议) TCP(传输控制协议),数据包一旦离开网卡即进入网络传输层
网络层(介于运输层和数据链路层,在数据链路层提供的在两个相邻的结点之间传送数据帧的功能上,进一步管理网络中的数据通信,将数据设法从源端经过若干个中间结点传送到目的端,从而向运输层提供最基本的主机到主机的传送服务。)
进行逻辑地址寻址,实现不同网络之间的路径选择。 协议有: ICMP IGMP IP(IPV4 IPV6) ARP RARP
数据链路层(加强物理层传输原始位流的功能,并将物理层提供的可能出错的物理连接改造成逻辑上无差错的数据链路)
建立逻辑连接、进行硬件地址寻址、差错校验 [2] 等功能。(由底层网络定义协议) 将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正。
物理层
建立、维护、断开物理连接。(由底层网络定义协议) TCP/IP 层级模型结构, 应用层之间的协议通过逐级调用 传输层(Transport layer)、网络层(Network Layer)和物理 数据链路层(Physical Data Link)而可以实现应用层的应用程序通信互联。 应用层需要关心应用程序的逻辑细节,而不是数据在网络中的传输活动。应用层其下三层则处理真正的通信细节。在 Internet 整个发展过程中的所有思想和着重点都以一种称为 RFC(Request For Comments)的文档格式存在。针对每一种特定的 TCP/IP 应用,有相应的 RFC [3] 文档。 一些典型的 TCP/IP 应用有 FTP、Telnet、SMTP、SNTP、REXEC、TFTP、LPD、SNMP、NFS、INETD 等。RFC 使一些基本相同的 TCP/IP 应用程序实现了标准化,从而使得不同厂家开发的应用程序可以互相通信
妈呀,怎么约讲约多了,不是说好了讲TCP/IP的吗?感觉再讲下去有可能出本 计算机网络的书了,哈哈哈。好好好,别扔鞋。
举个栗子:(这是我最喜欢的版块,也就是那那些难懂的知识豹哥用生活中常用的东西代替理解,让大家加深记忆!)
1、OSI就是一个七层的楼房,每层楼有每层楼的名字,比如第一层就叫物理层,第二层数据链路层,第三层网络层,第四层运输层,第五层会话层,第六层表示层,第七层应用层。
2、每层都有各自的房间,每个房间都有自己的名字,比如第七层 有HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP等房间,每个房间有每个房间的功能,(怎么越说越像政府办公大楼了??老铁没毛病啊,就是有点像啊)
什么是TCP/IP协议?好吧,我知道我废话太多了。
TCP/IP协议是一栋四层楼房
应用层 | 远程登录协议(TELNET)、文件传送协议(FTP)、域名服务(DNS)、超文本传送协议(HTTP)······· |
---|---|
运输层 | 传输控制协议(TCP)、 用户数据包协议(UDP) |
互联网层 | 互联网层定义了正式的分组格式和协议(IP协议) |
网络接口层 | 与硬件相关,负责基本通信 和OSI的物理层、数据链路层差不多 |
(我觉得我这个图比百度的图做的要好,哈哈哈)
微观上说TCP/IP就是 传输控制协议和因特网互联协议
但是宏观上来说 TCP/IP是一组协议的代名词,并不指单个协议
以上就是概念上难懂的地方,我解释清楚了,那么简单易懂的地方交给百度:
TCP
TCP是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于端到端的通讯。 TCP提供的是一种可靠的数据流服务,采用“带重传的肯定确认”技术来实现传输的可靠性。TCP还采用一种称为“滑动窗口”的方式进行流量控制,所谓窗口实际表示接收能力,用以限制发送方的发送速度。 如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向‘上’传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。 TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。 面向连接的服务(例如Telnet、FTP、rlogin、X Windows和SMTP)需要高度的可靠性,所以它们使用了TCP。DNS在某些情况下使用TCP(发送和接收域名数据库),但使用UDP传送有关单个主机的信息。
UDP
UDP是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送。 UDP通讯时不需要接收方确认,属于不可靠的传输,可能会出现丢包现象,实际应用中要求程序员编程验证。 UDP与 TCP位于同一层,但它不管数据包的顺序、错误或重发。因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询---应答的服务,例如NFS。相对于FTP或Telnet,这些服务需要交换的信息量较小。使用UDP的服务包括NTP(网络时间协议)和DNS(DNS也使用TCP)。 欺骗UDP包比欺骗TCP包更容易,因为UDP没有建立初始化连接(也可以称为握手)(因为在两个系统间没有虚电路),也就是说,与UDP相关的服务面临着更大的危险。
IP
IP层接收由更低层(网络接口层例如 以太网设备驱动程序)发来的 数据包,并把该数据包发送到更高层---TCP或 UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是否按顺序发送的或者有没有被破坏,IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。 高层的TCP和UDP服务在接收数据包时,通常假设包中的源地址是有效的。也可以这样说, IP地址形成了许多服务的认证基础,这些服务相信数据包是从一个有效的主机发送来的。IP确认包含一个选项,叫作IP source routing,可以用来指定一条源地址和目的地址之间的直接路径。对于一些TCP和UDP的服务来说,使用了该选项的IP包好像是从路径上的最后一个系统传递过来的,而不是来自于它的真实地点。这个选项是为了测试而存在的,说明了它可以被用来欺骗系统来进行平常是被禁止的连接。那么,许多依靠IP源地址做确认的服务将产生问题并且会被非法入侵。
数据格式
数据帧:帧头+IP数据包+帧尾 (帧头包括源和目标主机MAC初步地址及类型,帧尾是校验字) IP数据包:IP头部+TCP数据信息(IP头包括源和目标主机IP地址、类型、生存期等) TCP数据信息:TCP头部+实际数据 (TCP头包括源和目标主机 端口号、顺序号、确认号、校验字等)
IP地址
在Internet上连接的所有计算机,从大型机到微型计算机都是以独立的身份出现,我们称它为主机。为了实现各主机间的通信,每台主机都必须有一个唯一的 网络地址。就好像每一个住宅都有唯一的门牌一样,才不至于在传输资料时出现混乱。 Internet的网络地址是指连入Internet网络的计算机的地址编号。所以,在Internet网络中,网络地址唯一地标识一台计算机。 我们都已经知道,Internet是由几千万台计算机互相连接而成的。而我们要确认网络上的每一台计算机,靠的就是能唯一标识该计算机的网络地址,这个地址就叫做IP(Internet Protocol的简写)地址,即用Internet协议语言表示的地址。 在Internet里,IP地址是一个32位的二进制地址,为了便于记忆,将它们分为4组,每组8位,由小数点分开,用四个字节来表示,而且,用点分开的每个字节的数值范围是0~255,如202.116.0.1,这种书写方法叫做点数表示法。
IPV4
IPv4,是 互联网协议(Internet Protocol,IP)的第四版,也是第一个被广泛使用,构成现今 互联网技术的基石的协议。1981年Jon Postel 在RFC791中定义了IP,Ipv4可以运行在各种各样的底层网络上,比如端对端的串行数据链路(PPP协议和 SLIP协议) ,卫星链路等等。局域网中最常用的是以太网。 传统的TCP/IP协议基于 IPV4属于 第二代互联网技术,核心技术属于美国。它的最大问题是网络地址资源有限,从理论上讲,编址1600万个网络、40亿台主机。但采用A、B、C三类编址方式后,可用的网络地址和主机地址的数目大打折扣,以至IP地址已经枯竭。其中 北美占有3/4,约30亿个,而人口最多的亚洲只有不到4亿个, 中国截止2010年6月IPv4地址数量达到2.5亿,落后于4.2亿网民的需求。虽然用 动态IP及Nat地址转换等技术实现了一些缓冲,但IPV4地址枯竭已经成为不争的事实。在此,专家提出IPV6的互联网技术,也正在推行,但IPV4的使用过过渡到IPV6需要很长的一段过渡期。中国主要用的就是ip4,在win7中已经有了ipv6的协议不过对于中国的用户们来说可能很久以后才会用到吧。 传统的TCP/IP协议基于电话宽带以及 以太网的电器特性而制定的,其分包原则与检验占用了数据包很大的一部分比例造成了传输效率低,网络正向着全 光纤网络高速以太网方向发展,TCP/IP协议不能满足其发展需要。 1983年TCP/IP协议被 ARPAnet采用,直至发展到后来的互联网。那时只有几百台计算机互相联网。到1989年联网计算机数量突破10万台,并且同年出现了1.5Mbit/s的 骨干网。因为 IANA把大片的 地址空间分配给了一些公司和研究机构, 90年代初就有人担心10年内IP地址空间就会不够用,并由此导致了IPv6 的开发。
IPv6
IPv6是Internet Protocol Version 6的缩写,其中Internet Protocol译为“ 互联网协议”。IPv6是 IETF(互联网工程任务组,Internet Engineering Task Force)设计的用于替代现行版本IP协议(IPv4)的下一代IP协议。 与IPV4相比,IPV6具有以下几个优势: 一、IPv6具有更大的地址空间。IPv4中规定IP地址长度为32,即有2^32-1(符号^表示升幂,下同)个地址;而IPv6中IP地址的长度为128,即有2^128-1个地址。 二、IPv6使用更小的 路由表。IPv6的地址分配一开始就遵循聚类(Aggregation)的原则,这使得路由器能在路由表中用一条记录(Entry)表示一片子网,大大减小了路由器中路由表的长度,提高了路由器转发数据包的速度。 三、IPv6增加了增强的组播(Multicast)支持以及对流的控制(Flow Control),这使得网络上的多媒体应用有了长足发展的机会,为 服务质量(QoS,Quality of Service)控制提供了良好的网络平台。 四、IPv6加入了对自动 配置(Auto Configuration)的支持。这是对 DHCP协议的改进和扩展,使得网络(尤其是局域网)的管理更加方便和快捷。 五、IPv6具有更高的安全性。在使用IPv6网络中用户可以对网络层的数据进行加密并对IP报文进行校验,极大的增强了网络的安全性。
ICMP
ICMP与IP位于同一层,它被用来传送IP的控制信息。它主要是用来提供有关通向目的地址的路径信息。ICMP的‘Redirect’信息通知主机通向其他系统的更准确的路径,而‘Unreachable’信息则指出路径有问题。另外,如果路径不可用了,ICMP可以使TCP连接‘体面地’终止。PING是最常用的基于ICMP的服务。

(我觉得这个图简单明了,就复制过来了,来源百度百科)
说了这么多,有同学还问那到底什么什么是TCP/IP协议?
本着写python的精神简洁为一句话:那两层楼里边的所有东西就是。
再啰嗦一下,比如你问我什么是发改委,我告诉你是国家的一个职能部门,负责国家经济,对外贸易·······,听完你还不知道。
我给你指发改委的两栋办公楼,说:这就是发改委,里边的每个部门有每个部门的任务和作用,所有部门和一起就叫发改委。
要是想转载,记得联系我一下哦,别不吭声就转载了还不放原作者地址,这样不道义哦。