一张图让你看懂 TCP/IP

OSI定义了网络互连的七层框架(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层),每一层都有自己相应的功能和协议,并且与相邻层的接口通信。


OSI七层模型 相关协议 缩写

应用层

OSI参考模型中最靠近用户的一层,是为计算机用户提供应用接口,也为用户直接提供各种网络服务。我们常见应用层的网络服务协议有:HTTP,HTTPS,FTP,POP3、SMTP等

HTTP 超文本传输协议

FTP 文件传输协议

SMTP 简单邮件传输协议

TELNET TCP/IP终端仿真协议

POP3 邮局协议第三版

Finger 用户信息协议

NNTP 网络新闻传输协议

IMAP4 因特网信息访问协议第四版

LPR UNIX 远程打印协议

.Rwho UNIX 远程 Who协议

Rexec UNIX远程执行协议

Login UNIX 远程登陆协议

RSH UNIX 远程Shell协议

NTF HP网络文件传输协议

RDA HP 远程数据库访问协议

VT 虚拟终端仿真协议

RFA HP 远程文件访问协议

RPC Remote Process Comm.

S-HTTP 安全超文本传输协议

GDP网关发现协议

X-Window

CMOT 基于TCP/IP的CMIP协议

SOCKS 安全套接字协议

FANP流属性通知协议

SLP服务定位协议

MSN微软网络服务

Radius 远程用户拨号认证服务协议

DNS 域名系统

NFS网络文件系统协议

NIS SUN 网络信息系统协议

R-STAT SUN远程状态协议

NSM SUN 网络状态监测协议

PMAP SUN 端口映射协议

Mount

LPR UNIX远程打印协议

常用UDP协议的应用层服务

BOOTP引导协议

DHCP动态主机配套协议

NTP网络时间协议

TFTP简单文件传输协议

SNMP简单网络管理协议

表示层

表示层提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别。如果必要,该层可提供一种标准表示形式,用于将计算机内部的多种数据格式转换成通信中采用的标准表示形式。数据压缩和加密也是表示层可提供的转换功能之一。

DECnet NSP

LPP 轻量级表示协议

NBSSN NetBIOS会话服务协议

XDP外部数据表示协议

IPX

会话层

SSL 安全套接字层协议

TLS传输层安全协议

DAP目录访问协议

LDAP轻量级目录访问协议

RPC远程过程调用协议

VINES NETRPC

VFRP

NeTBIOS

IPX

传输层

传输层建立了主机端到端的链接,传输层的作用是为上层协议提供端到端的可靠和透明的数据传输服务,包括处理差错控制和流量控制等问题。该层向高层屏蔽了下层数据通信的细节,使高层用户看到的只是在两个传输实体间的一条主机到主机的、可由用户控制和设定的、可靠的数据通路。我们通常说的,TCP UDP就是在这一层。端口号既是这里的“端”。

XOT 基于tcp之上的X协议

Van Jacobson 压缩TCP协议

ISO-DE ISO 开发环境-------->NetBISO

TALI 传输适配层接口协议

DSI、NetBIOS、IP NeTBIOS、ISO-TP SSP、SMB、MSRPC

UDP用户数据报协议

RUDP可靠的用户数据报协议

Mobile IP 移动IP协议

网络层

本层通过IP寻址来建立两个节点之间的连接,为源端的运输层送来的分组,选择合适的路由和交换节点,正确无误地按照地址传送给目的端的运输层。就是通常说的IP层。这一层就是我们经常说的IP协议层。

IP/IPv6 互联网协议/互联网协议第六版

ICMPv6互联网控制信息协议第六版

ICMP互联网控制信息协议

IGMP 互联网组管理协议

SLIP 串行线路IP协议

安全协议

AH 认证头协议

ESP 安装封装有效载荷协议

路由协议

EGP 外部网关协议

OSPF 开放最短路径优先协议

IGRP 内部网关路由协议

NHRP 下一跳解析协议

IE-IRGP 增强内部网关路由选择协议

RIPng for IPv6 IPv6路由信息协议

GGP 网关到网关协议

VRRP 虚拟路由器冗余协议

PGM 实际通用组播协议

RSVP 资源预留协议

PIM-DM 密集模式独立组播协议

DVMRP 距离矢量组播路由协议

RIP2 路由信息协议第二版

PIM-SM 稀疏模式独立组播协议

MOSPF 组播开放最短路径优先协议

数据链路层

将比特组合成字节,再将字节组合成帧,使用链路层地址 (以太网使用MAC地址)来访问介质,并进行差错检测。

数据链路层又分为2个子层:逻辑链路控制子层(LLC)和媒体访问控制子层(MAC)。

MPLS 多协议标签交换协议

XTP 压缩传输协议

DCAP 数据转换客户访问协议

SLE 串行连接封装协议

IPinIP IP套IP封装协议

隧道协议

PPTP点对点隧道协议

L2F第二层转发协议

L2TP 第二层隧道协议

ATMP接入隧道管理协议

Cisco 协议

CDP 思科发现协议

CGMP 思科组管理协议

地址解析协议

ARP地址解析协议

RAR逆向地址解析协议

物理层

实际最终信号的传输是通过物理层实现的。通过物理介质传输比特流。规定了电平、速度和电缆针脚。常用设备有(各种物理设备)集线器、中继器、调制解调器、网线、双绞线、同轴电缆。这些都是物理层的传输介质。

IEEE 802.2

Ethernet v.2

Internetwork

tcp/ip的传输原理

tcp/ip在通信过程中通过数据包报文的方式进行通信。下图是tcp的报文格式

tcp报文中比较重要的信息

序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。

确认序号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1。

标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN等,具体含义如下:

URG:紧急指针(urgent pointer)有效。

ACK:确认序号有效。

PSH:接收方应该尽快将这个报文交给应用层。

RST:重置连接。

SYN:发起一个新连接。

FIN:释放一个连接。

需要注意的是:

(A)不要将确认序号Ack与标志位中的ACK搞混。

(B)确认方Ack=发起方Req+1,两端配对。

tcp的三次握手与四次挥手

三次握手

所谓三次握手即建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。在socket编程中,这一过程由客户端执行connect来触发,整个流程如下图所示:

最开始的时候客户端和服务器都是处于CLOSED状态。主动打开连接的为客户端,被动打开连接的是服务器。

TCP服务器进程先创建传输控制块TCB,时刻准备接受客户进程的连接请求,此时服务器就进入了LISTEN(监听)状态:

第一次握手

TCP客户进程也是先创建传输控制块TCB,然后向服务器发出连接请求报文:Client将标志位SYN置为1,随机产生一个值seq=x,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。

第二次握手

Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=x+1,随机产生一个值seq=y,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。

第三次握手

Client收到确认后,检查ack是否为x+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=y+1,并向服务端发出确认信息,Server检查ack是否为y+1,ACK是否为1,序列号seq=x+1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。

四次挥手

所谓四次挥手即终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。在socket编程中,这一过程由客户端或服务端任一方执行close来触发,整个流程如下图所示:

由于TCP连接时全双工的,因此,每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接,收到一个FIN只是意味着这一方向上没有数据流动了,即不会再收到数据了,但是在这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN。首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭,上图描述的即是如此。

第一次挥手

客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN-WAIT-1(终止等待1)状态。

第二次挥手

服务器收到连接释放报文,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT(关闭等待)状态。

客户端进入FIN-WAIT-2

客户端收到服务器的确认请求后,此时,客户端就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文(在这之前还需要接受服务器发送的最后的数据)。

第三次挥手

服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN=1,ack=u+1,由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为seq=w,此时,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。

第四次挥手

客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态。(注意此时TCP连接还没有释放,必须经过2∗MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。)

服务器只要收到了客户端发出的确认,立即进入CLOSED状态。同样,撤销TCB后,就结束了这次的TCP连接。可以看到,服务器结束TCP连接的时间要比客户端早一些。

结合上面的分解过程,再看一下整个握手挥手的过程

END

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

推荐阅读更多精彩内容

  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 5,054评论 0 8
  • TCP/IP于1973年面世,并于1978年被划分成两个协议,TCP和IP。1983年取代了NCP(Network...
    系唔空啊阅读 1,222评论 0 0
  • 一、网络基础知识 1. OSI 参考模型 OSI 模型中,每个分层都接受由它下一层所提供的特定服务,并且负责为自己...
    SeanCST阅读 1,656评论 0 6
  • LT-0807,2018.03.11翻译,@成都 声明 本文是一篇关于TCP/IP协议组件的RFC,聚焦于一个IP...
    摩诃婆罗多阅读 4,084评论 1 5
  • # 图解TCP/IP 标签(空格分隔): 2018招聘 --- ##第1章 网络基础知识 ### ### 1.1 ...
    Kai_a3da阅读 1,444评论 0 2