TCP/IP协议工做原理简述

 

TCP/IP协议工做原理简述html

 

TCP/IP协议工做原理简述

1 概要

协议是什么?协议是一组为完成特定需求或功能而定义的标准通信格式。协议是服务于具体需求或功能的,它不能独立存在。缓存

制定TCP/IP协议的目的是为了解决主机互联以及互联的主机上的应用通信的问题。TCP/IP协议共有四层:应用层、传输层、网络层、链路层。应用层实际就是咱们的应用程序,对于非具体应用而言这一层的协议是未定义的,须要咱们本身根据咱们具体的业务模型来制定。传输层桥接应用层和网络层,向下为咱们的应用层数据填入端口标识,向上根据端口标识往各个应用分发数据包。网络层主要的功能是逻辑选路,确保咱们的数据包能到达指定的目的地。链路层负责往/从有直接物理链路相连的主机或路由器发包/收包。网络

TCP/IP协议是工做在主机或路由器上的,这一点很明显,由于网络拓扑中的实体除了主机(路由器)就是链路,链路固然不能运行咱们的协议,它只能传输数据。当主机A中的a程序须要跟主机B中的b程序通信的时候,A主机会根据TCP/IP协议往咱们的原始数据包中依次塞入:TCP首部字段(假如应用程序基于TCP协议)、IP首部字段、以太网首部字段,最后造成的数据包咱们称之为以太网数据帧,任何一台主机发送和接收的都只能是以太网数据帧;B主机收到相应的以太网数据帧后,会依次丢弃:以太网首部字段、IP首部字段、TCP首部字段,而后再将剩下的数据包交给b程序。现现在,不少复杂的应用程序也采用相似的思想对应用层协议进行分层。less

2 应用层

常见的应用层协议有:ssh

  • echo 7/tcp(udp)
  • daytime 13/tcp(udp)
  • ftp 21/tcp(udp)
  • ssh 22/tcp(udp)
  • telnet 23/tcp(udp)
  • tftp 69/tcp(udp)
  • finger 79/tcp(udp)
  • http 80/tcp(udp)
  • https 443/tcp(udp) # http protocol over TLS/SSL

应用层协议与咱们具体编写的应用相关,它是整个TCP/IP协议族的最上层协议,也是惟一由用户制定通信格式的协议(标准委员会不能未卜先知)。数据传输通常是由应用层发起的,但它除了提供一个目标地址(域名或IP地址)以外,不涉及任何传输细节。应用层只专一于应用所属领域内的业务逻辑。tcp

3 传输层

工做在传输层的协议主要有TCP和UDP协议。传输层主要负责主机内的应用层数据包的收取和派发工做。应用层组好包后将数据包交给传输层,传输层通过必定的处理(填充TCP或UDP首部字段)以后,再转交给IP协议模块;传输层从下层IP模块收包时,去掉本层相关的首部字段,再将数据包派发给各个应用程序。因为传输层服务的对象是主机内的全部应用程序,因此它须要特定的手段来区分不一样的应用程序,此即,端口。post

只作上面这些事情彷佛有点少!对,标准委员会的人也是这么想的。因此,除了上面的核心业务以外,不一样的传输层协议还提供了点增值服务。例如:TCP提供可靠的数据传输业务;UDP提供一对多的广播业务。spa

传输层一样不清楚传输细节,它只对上层应用层负责。code

4 网络层

工做在网络层的协议主要有:IP协议、ICMP以及IGMP协议。其中IP协议最为重要,ICMP和IGMP协议也得依赖IP协议来收发包。orm

网络层的核心业务便是选路(肯定数据包的下一跳),在全部的网络层协议中,IP协议负责该核心业务,因此咱们有时候也直接用IP协议来指代网络层。在处理上层传输层和下层链路层发来的数据包时,IP协议的行为是不同的,前者,仅仅填入本机和目的端IP地址;后者,对于本应交给本机的数据包提交给上层传输层,对于非交给本机的数据包也为它们指明下一跳(需特殊配置主机)。能够看到IP协议不只对本机尽职尽责,同时也颇具助人为乐的精神,事实上,这种助人为乐的精神正是整个TCP/IP协议得以正常运转的核心。

IP协议为上层传输层下发的数据包或路过的数据包选好路后,它们并不亲自将包送达下一站,而是将它们交代给链路层去护送。

5 链路层

工做在链路层的协议主要包括:Ethernet、IEEE 80二、ARP、RARP等协议。链路层的核心功能是:1. 将数据包发送给有直接物理链路相连的主机(或路由器) 2. 从有直接物理链路相连的主机(或路由器)处收取数据。链路层执行的是实际的收发包工做,因此,它们只能往/从有直接物理链路相连的主机(或路由器)发送/收取数据,毕竟,物理规律老是得遵照的。

链路层必须向物理链路上发送全部IP协议交代下来的数据包,必须将全部收到的数据包(以太网数据帧)交给IP协议处理。链路层是没有什么自主权的,不能擅自截留,不能擅自丢包,能作的仅仅是搬运,实实在在的搬砖工人。链路层也没什么智商,IP交给它的数据包虽然包含IP地址,但它却看不明白,它只认物理地址(即48位mac地址)。若是某个IP地址是它不久前去过的地方(ARP缓存),那当要送包再去往该IP地址时,它直接就能送;不然,就得挨个问一遍,有则去,没有就算了。并且它也很容易被欺骗,网关就常常骗它。网关为何要欺骗它呢?由于IP协议决定的下一跳不必定就在局域网中(即跟当前主机没有直接相连的物理链路),而链路层工做能力有限,只能在局域网内发包,因此网关只好骗它说我就是目标地址的主机。

Date: 2015-12-20T21:07+0800

Author: ruleless

Org version 7.9.3f with Emacs version 24

Validate XHTML 1.0
相关文章
相关标签/搜索