首页 > 其他 > 详细

TCP/IP协议理解笔记

时间:2015-09-27 17:20:38      阅读:272      评论:0      收藏:0      [点我收藏+]

参考:http://blog.csdn.net/hankscpp/article/details/8611229

  http://blog.csdn.net/cws1214/article/details/8078629

 

 

   OSI模型,即开放式通信系统互联参考模型(Open System Interconnection Reference Model),是国际标准化组织(ISO)提出的一个试图使各种计算机在世界范围内互连为网络的标准框架,简称OSI

 技术分享

                      图一

————————————————————OSI七层模型,每层的部分协议——————————————————————————————————————————

第七层 应用层         协议:DHCP · DNS · FTP · Gopher · HTTP ·  POP3  · SMTP · SNMP · SSH · TELNET · RPC ·TLS · SDP · SOAP · GTP · STUN · NTP 
第六层 表示层         协议:无
第五层 会话层         协议:无
第四层 传输层         协议:TCP · UDP · DCCP · SCTP · RTP · RSVP · PPTP 
第三层 网络层         协议:IP (IPv4 · IPv6) · ARP · RARP · ICMP · ICMPv6 · IGMP · RIP · OSPF · BGP · IS-IS · IPsec 
第二层 数据链路层    协议: 802.11 · 802.16 · Wi-Fi  · 令牌环 · 以太网 · FDDI · 帧中继 · GPRS · EVDO · HSPA · HDLC · PPP · L2TP · ISDN 
第一层 物理层         协议: RS-443 、RS-232C、RS-485 、理-2593

 ——————————————————————————————————————————————————————————————————————————————

 

TCP/IP协议模型(Transmission Control Protocol/Internet Protocol),包含了一系列构成互联网基础的网络协议,是Internet的核心协议,通过20多年的发展已日渐成熟,并被广泛应用于局域网和广域网中,目前已成为事实上的国际标准。TCP/IP协议簇是一组不同层次上的多个协议的组合,通常被认为是一个四层协议系统,与OSI的七层模型相对应。

 技术分享

链路层

 也称作数据链路层(在第一个图中为网络接口层和硬件层),通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。ARP(地址解析协议)和RARP(逆地址解析协议)是某些网络接口(如以太网和令牌环网)使用的特殊协议,用来转换IP层和网络接口层使用的地址。

 

 

网络层

也称作互联网层(在第一个图中为网际层),处理分组在网络中的活动,例如分组的选路。在TCP/IP协议族中,网络层协议包括IP协议(网际协议),ICMP协议(Internet互联网控制报文协议),以及IGMP协议(Internet组管理协议)。

  IP是一种网络层协议,提供的是一种不可靠的服务,它只是尽可能快地把分组从源结点送到目的结点,但是并不提供任何可靠性保证。同时被TCP和UDP使用。TCP和UDP的每组数据都通过端系统和每个中间路由器中的IP层在互联网中进行传输。

  ICMP是用于在IP主机、路由器之间传递控制消息,控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息,这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

  IGMP是Internet组管理协议。它用来把一个UDP数据报多播到多个主机。

 

 

传输层

主要为两台主机上的应用程序提供端到端的通信。在TCP/IP协议族中,有两个互不相同的传输协议:TCP(传输控制协议)和UDP(用户数据报协议)。

  TCP为两台主机提供高可靠性的数据通信。它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。为了提供可靠的服务,TCP采用了超时重传、发送和接收端到端的确认分组等机制。

  UDP则为应用层提供一种非常简单的服务,它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。一个数据报是指从发送方传输到接收方的一个信息单元(例如,发送方指定的一定字节数的信息)。UDP协议任何必需的可靠性必须由应用层来提供。

 

 

应用层

应用层负责处理特定的应用程序细节。

 

 

——————TCP————————————————————————

 

TCP协议通过以下过程来保证端到端数据通信的可靠性:

1、TCP实体把应用程序划分为合适的数据块,加上TCP报文头,生成数据段;

2、当TCP实体发出数据段后,立即启动计时器,如果源设备在计时器清零后仍然没有收到目的设备的确认报文,重发数据段;

3、当目的设备的TCP实体收到数据,发回一个确认。

4、TCP数据段包含一个端到端的校验和字段,目的设备检测数据传输过程的任何变化。如果目的设备收到的数据校验和计算结果有误,则将丢弃数据段,源设备在前面所述的计时器清零后重发数据段。

5、由于TCP数据段承载在IP数据包内,而IP提供了无连接的、不可靠的服务,数据包有可能会失序。TCP协议提供了重新排序机制,目的设备将收到的数据重新排序,交给应用程序。

6、TCP提供流量控制。TCP连接的每一端都有缓冲窗口。目的设备只允许源设备发送自己可以接收的数据,防止缓冲区溢出。

7、TCP支持全双工数据传输。

 

 技术分享

注意上图的TCP报文格式,下图的更详细

技术分享

 

其中ACK、SYN、FIN、序号这四个部分在下面会用到。

ACK : TCP协议规定,只有ACK=1时有效,也规定连接建立后所有发送的报文的ACK必须为1

SYN(SYNchronization) : 在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文。对方若同意建立连接,则应在响应报文中使SYN=1和ACK=1. 因此,  SYN置1就表示这是一个连接请求或连接接受报文。

FIN (finis):终结的意思, 用来释放一个连接。当 FIN = 1 时,表明此报文段的发送方的数据已经发送完毕,并要求释放连接。

序号:TCP是面向字节流的,在一个TCP连接中传送的字节流中的每一个字节流都按顺序编号,整个要传送的字节流的起始序号必须在连接建立时设置。例如,报文段的序号字段值是301,而携带的数据共有100字节,这就表示这个报文段的最后一个字节的序号是400。下一个报文段的数据传送序号要从401开始。

 

三次握手的过程:

 技术分享

准备阶段:服务器的应用进程会先创建TCB(传输控制块),用以准备接受客户端的连接请求。此时服务器处于LISTEN(监听)状态。

①客户端发出请求连接即 SYN=1 ACK=0 seq=x(TCP规定SYN=1时不能携带数据,但要消耗一个序号,因此声明自己的序号是seq = x)【客户端进入SYN-SNET(同步已发送)状态】

②服务器端进行确认,向客户端发送SYN=1 ACK=1 seq=y, ack=x+1。【服务器进入SYN-RCVD(同步收到)状态】

③客户端收到服务器的确认信息后,再次向服务器发送ACK=1,seq=x+1,ack=y+1【客户端进入ESTABLISHED状态,当服务器收到客户端的确认信息后也会进入ESTABLISHED状态】

 

四次挥手的过程:

 技术分享 

①客户端没有数据要向服务器发送时,先向TCP发出连接释放报文段,并停止发送数据,主动关闭TCP连接。客户端把连接释放报文段首部的终止控制位FIN置1,其序号seq=u(u等于前面已传送过的数据的最后一个字节的序号加1)

【客户端进入FIN-WAIT1(终止等待1)状态】

②服务器收到连接释放报文段后即发出确认,确认号是ack=u+1,报文段本身的序号seq=v(v等于前面已传送过的数据的最后一个字节的序号加1)

【服务器进入CLOSE-WAIT(关闭等待)状态,客户端收到服务器的确认后进   入FIN-WAIT2(终止等待2)状态】

【客户端的写通道关闭,服务器的读通道关闭】

③服务器没有数据向客户端发送时,应用进程就通知TCP释放连接,服务器发出的连接释放报文段必须使FIN=1。现在假定服务器的序号为w(在半关闭状态服务器可能发送了一些数据),B还必须重复上次已发送过的确认序号ack=u+1。

【服务器进入LAST-ACK(最后确认)状态】

④客户端收到服务器的连接释放报文段后,发出确认报文段,将报文段中的ACK=1,  ack=w+1, seq=u+1。

【客户端进入TIME-WAIT(时间等待)状态,此时TCP连接还没有释放,必须经过时间等待计时器设置的时间2MSL(约4min)后,客户端才进入到CLOSED状态,服务器只要收到客户端的确认就进入CLOSED状态,撤销TCB(传输控制块)后结束TCP连接】

TCP/IP协议理解笔记

原文:http://www.cnblogs.com/heshengbang/p/4842384.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!