(二)TCP/IP四层模型


1、基本介绍

TCP/IP协议,也称TCP/IP协议族或TCP/IP协议栈,其中:

TCP:Transmission Control Protocol 传输控制协议
IP: Internet Protocol 互联网协议

该协议是目前世界上应用最为广泛的协议,是以TCP和IP为基础的不同层次上多个协议的集合,两台主机要实现通讯,都必须遵守TCP/IP协议。
  
  以下是ISO/OSI七层模型与TCP/IP四层模型对比:

相同点:

  1. ISO/OSI参考模型和TCP/IP参考模型都采用了层次结构的概念;
  2. 都能够提供面向连接(TCP协议)和无连接(UDP协议)两种通信服务机制。

不同点:

  1. 前者是七层模型结构,后者是四层模型结构;
  2. 对可靠性要求不同,TCP/IP参考模型的要求更高;
  3. ISO/OSI参考模型是在协议开发之前设计的,具有通用性;TCP/IP参考模型则是在协议集已有的情况下建立的,不适用非TCP/IP网络;
  4. 实际市场应用不同, ISO/OSI参考模型只是理论上的模型,并没有成熟的产品支持;而TCP/IP参考模型已经成为“实际上的国际标准”。

2、网络接口层

网络接口层与OSI参考模型中的物理层数据链路层相对应,它负责监视数据在主机和网络之间的交换。实际上TCP/IP本身并未定义该层的协议,而由参与互联的各个网络使用其自己的物理层和数据链路层协议,然后与TCP/IP的网络接口层进行连接。
  地址解析协议(ARP)工作在此层,即OSI参考模型中的数据链路层,负责将IP地址转译成MAC地址,可在系统的命令提示符中输入“arp -a”来查看:


3、网际互联层

网际互联层对应OSI参考模型的网络层,主要解决主机到主机的通信问题。
  该层有3个主要协议:网际协议(IP)、互联网组管理协议(IGMP)、互联网控制报文协议(ICMP)。其中互联网控制报文协议(ICMP)可以用来查看当前计算机是否与某指定IP的计算机实现网络互通,利用该协议可以给指定IP发送一个数据包,当收到回复后,证明网络已经互相连通,可在系统的命令提示符中输入“ping 192.168.XXX.X(某IP地址)”来查看:


4、传输层

传输层对应OSI参考模型的传输层,为应用层实体提供端到端的通信功能,保证了数据包的顺序传送及数据的完整性。该层有两个最主要的功能,第一定义了两个主要的协议:传输控制协议(TCP)、用户数据报协议(UDP),其中TCP协议是可靠的、面向连接的协议;UDP协议是不可靠的,面向无连接的协议;第二,确定接收端的端口号即发送端的端口号。
<br />

1.端口

当我们发送或接受数据时,通过IP地址可以确定目标计算机,但该主机可以提供许多服务,比如Web服务、FTP服务、SMTP服务等,主机如何区分并确定应该使用哪项服务来处理数据就是通过端口号。
  端口号分为源端口和目的端口,各占16位,因此,总共可用的端口号总数为2^16,即从0开始至65535,共计65536个。端口分为以下三类:

  • 周知端口
    周知端口是众所周知的端口号,范围从0到1023,例如80端口分配给WWW服务,21端口分配给FTP服务等,其他常用端口号详见本篇第五部分“应用层”。
  • 注册端口
    端口1024到49151,分配给用户进程或应用程序;这些进程主要是用户选择安装的一些应用程序,而不是已经分配好了公认端口的常用程序;这些端口在没有被服务器资源占用的时候,可以用用户端动态选用为源端口。
  • 动态端口
    动态端口的范围是从49152到65535。之所以称为动态端口,是因为它 一般不固定分配某种服务,而是动态分配。

可在系统的命令提示符中输入“netstat -an”来查看,其中:

“-a”是查看所有连接和监听接口
“-n”是显示IP地址和端口号,而不显示域名和服务名



注意:
1.最下方红色方框圈起的表示本机的随机端口连接到对方的80端口,说明本机开启了网页服务;
2.关于常见的几种“状态”:LISTENING代表正在被监听,表明开启了一些本机服务,ESTABLISHED代表已连接,并且在持续连接的状态,CLOSE_WAIT、TIME_WAIT表示连接超时;
3.UDP协议不像TCP协议那样需要首先经过“三次握手”确认对方是否存在,而是直接传送数据,因此不需要监听,也就不会有状态;
4.此方法也可用于判断并确定对方的IP地址。

<br />

2.TCP协议

下面着重讲解TCP协议的“三次握手”,在此之前先来了解TCP报文及格式:当应用层向TCP层发送用于网间传输的、用8位字节表示的数据流时,TCP会把数据流分割成适当长度的报文段,之后TCP把数据包传给IP层,由它来通过网络将包传送给接收端实体的TCP层,TCP的报文格式如下:

上图中有几个字段需要重点介绍下:

  1. 序号:seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。
  2. 确认序号:ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,ack=seq+1。
  3. 标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN,具体含义如下:
    URG:紧急指针有效。
    ACK:确认序号有效。
    PSH:接收方应该尽快将这个报文交给应用层。
    RST:重置连接。
    SYN:发起一个新连接。
    FIN:释放一个连接。

再来看三次握手(Three-Way Handshake),即建立TCP连接,指建立一个TCP连接时,需要连接双方总共发送3个包以确认连接的建立。TCP为了保证报文传输的可靠,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传,整个流程如下图所示:

  1. 第一次握手:主机A将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给主机B,主机A进入SYN_SENT状态,等待主机B确认。
  2. 第二次握手:主机B收到数据包后由标志位SYN=1得知主机A请求建立连接,主机B将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给主机A以确认连接请求,主机B进入SYN_RCVD状态。
  3. 第三次握手:主机A收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给主机B,主机B检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,主机A和主机B进入ESTABLISHED状态,完成三次握手,随后就可以开始传输数据了。

关于“三次握手”的由来,可以参考这个经典的两军问题

<br />

3.UDP协议

最后简单介绍一下UDP协议,报文格式如下:



  跟之前的TCP协议报文格式相比,明显更加精简,这也意味着解析UDP包头所需要的资源更少,因此UDP协议传输的更快。


5、应用层

应用层对应OSI参考模型的高层,为用户提供所需要的各种服务,常用协议如下:

  1. DNS:域名系统
    端口号53
    DNS是因特网使用的命名系统,用来把便于人们使用的机器名字转换为IP地址。

  2. FTP:文件传输协议
    端口号21用于FTP的登陆认证,端口号20用于实际的数据传输
    FTP是因特网上使用得最广泛的文件传送协议。FTP提供交互式的访问,允许客户指明文件类型与格式,并允许文件具有存取权限。

  3. Telnet:远程登录协议
    端口号23
    Telnet是一个简单的远程登录协议,它也是因特网的正式标准。
    但是需要注意,现在默认不开启23端口,因为Telnet协议在后台使用明文传递,只要被截获就可以读取传递的数据,甚至不需要破解,因此要尽可能的不使用23端口而使用其他服务代替。

  4. HTTP:超文本传输协议
    端口号80
    HTTP是面向对象的应用层协议,它是万维网上能够可靠地交换文件的重要基础。HTTP使用面向连接的TCP作为运输层协议,保证了数据的可靠传输。

  5. SMTP:简单邮件传送协议
    端口号25
    SMTP规定了在两个相互通信的SMTP进程之间应如何交换信息。SMTP通信的三个阶段:建立连接、邮件传送、连接释放。

  6. POP3:邮件读取协议
    端口号110
    POP3(Post Office Protocol 3)协议通常被用来接收电子邮件。


6、数据的封装与街封装

通过示例可以更直观的了解数据的封装与解封装过程,同时为了便于阅读文字,动画切换间隔设置的比较长。


版权声明:欢迎转载,欢迎扩散,但转载时请标明作者以及原文出处,谢谢合作!             ↓↓↓
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容

  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 5,042评论 0 8
  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 13,028评论 6 174
  • 协议基础 协议就是计算机之间通过网络实现通信时实现所达成的一种“约定”,这种约定使得那些由不同厂商的设备,不同的C...
    d9fc24a0c9a9阅读 2,332评论 0 6
  • 名词延伸 通俗的说,域名就相当于一个家庭的门牌号码,别人通过这个号码可以很容易的找到你。如果把IP地址比作一间房子...
    杨大虾阅读 20,569评论 2 57
  • 李妩娟 周口太康 分享坚持第25天 古人云,羊羔虽美,众口难调。总会有人说你好,也会有人说你不好,但只要...
    李妩娟阅读 276评论 1 3