TCPIP协议详解

本博客整理自网络,仅供学习参考,如有侵权,联系删除。邮箱:rom100@163.com。 

协议分层

TCP/IP在数据包设计上采用封装和分用的策略,所谓封装就是在应用程序在发送数据的过程中,每一层都增加一些首部信息,这些信息用于和接收端同层次进行沟通,例如当数据从应用程序发送到以太网过程中数据逐层加工的示意图如下所示: 


 

1.应用层

应用层做为 TCP/IP 协议的最高层级,对于我们移动开发来说,是接触最多的。

运行在TCP协议上的协议:
HTTP(Hypertext Transfer Protocol,超文本传输协议),主要用于普通浏览。
HTTPS(Hypertext Transfer Protocol over Secure Socket Layer, or HTTP over SSL,安全超文本传输协议),HTTP协议的安全版本。
FTP(File Transfer Protocol,文件传输协议),由名知义,用于文件传输。
POP3(Post Office Protocol, version 3,邮局协议),收邮件用。
SMTP(Simple Mail Transfer Protocol,简单邮件传输协议),用来发送电子邮件。
TELNET(Teletype over the Network,网络电传),通过一个终端(terminal)登陆到网络。
SSH(Secure Shell,用于替代安全性差的TELNET),用于加密安全登陆用。
运行在UDP协议上的协议:
BOOTP(Boot Protocol,启动协议),应用于无盘设备。
NTP(Network Time Protocol,网络时间协议),用于网络同步。
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),动态配置IP地址。
其他:
DNS(Domain Name Service,域名服务),用于完成地址查找,邮件转发等工作(运行在TCP和UDP协议上)。
ECHO(Echo Protocol,回绕协议),用于查错及测量应答时间(运行在TCP和UDP协议上)。
SNMP(Simple Network Management Protocol,简单网络管理协议),用于网络信息的收集和网络管理。
ARP(Address Resolution Protocol,地址解析协议),用于动态解析以太网硬件的地址。

2.传输层

传输层提供了两种到达目标网络的方式:


(1)用户数据报协议UDP:

只提供了基本的错误检测,是一个无连接的协议。
特点:把数据打包,数据大小有限制(64k),不建立连接,速度快,但可靠性低。


(2)传输控制协议TCP:

提供了完善的错误控制和流量控制,能够确保数据正常传输,是一个面向连接的协议。
特点:建立连接通道,数据大小无限制速度慢,但是可靠性高。由于传输层涉及的东西比较多,比如端口,Socket等。

TCP三次握手

第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。

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

第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。

简单来说,就是:

1):建立连接时,客户端发送SYN包(SYN=i)到服务器,并进入到SYN-SEND状态,等待服务器确认

2):服务器收到SYN包,必须确认客户的SYN(ack=i+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器进入SYN-RECV状态

3):客户端收到服务器的SYN+ACK包,向服务器发送确认报ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手,客户端与服务器开始传送数据。

TCP四次挥手

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

第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。

第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。

第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。

第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。

为什么建立连接是三次握手,而关闭连接却是四次挥手呢?

       这是因为服务端在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。而关闭连接时,当收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,己方也未必全部数据都发送给对方了,所以己方可以立即close,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会分开发送。

3.网络层

IP地址由两部分组成,即网络地址和主机地址,二者是主从关系:

(1)网络号 net-id,它标志主机(或路由器)所连接到的网络,网络地址表示其属于互联网的哪一个网络

(2)主机号 host-id,它标志该主机(或路由器),主机地址表示其属于该网络中的哪一台主机。


 

4.网络接口层

协议拆分

       类似地,许多应用进程使用TCP或UDP传送数据,则需要在TCP段或UDP数据报首部定义一个应用程序标识符。TCP和UDP都使用一个16位的端口号来标识不同的应用程序,TCP和UDP把“源端口号”和“目的端口号”分别存人TCP段首部和UDP数据报首部。网络接口分别发送和接收IP、ARP、RARP的数据,同理,也必须在以太网(假定物理网络是一个以太网)的首部加入一个字段,用来说明是哪个协议的数据。为此,以太网帧首部定义了一个16位的“类型”字段。当接收方(也称目的主机)收到一个以太网帧时,数据就开始在协议栈中自下而上传送。各层协议利用报文首部所携带的协议控制信息做相应的处理,然后去掉各层协议数据单元的首部,将封装的数据交给上层协议。每层协议都要检查协议首部中的协议标识,以确定让哪一个协议接收数据,这个过程称为拆封,如上图所示。

局域网数据传输

       任何两个对等层(peerlayer),例如传输层、网际层、网络接口层之间的通信,如同上图中标识的一样,好像是将数据通过水平虚线直接传递给对方,这就是所谓的对等层之间的通信。实际上,协议就是在两个对等层之间传递数据时的各种规定。由此可以这样认为:实际通信是按垂直方向进行的,层与层之间经过封装和拆封这样的操作实现物理通信。但是逻辑上,却是在水平方向上利用协议进行的对等层通信。

广域网数据传输


      应用层和传输层使用端到端(end-to-end)协议,路由器中没有这两层协议,只有端系统才有这两层协议。网际层是逐跳(hop-by-hop)协议,端系统和路由器都有网际层协议。一个路由器具有两个或多个网络接口,这样才能连接两个或多个网络。互联网的目的之一是在应用程序中屏蔽所有的物理网络细节。在上图中,应用层不需要关心一个端系统是在以太网上还是在令牌环网上,它们通过路由器进行通信。随着不同类型物理网络的增加,互联网的规模变得越来越大,也需要增加路由器,但是应用层仍然是一样的。

  • 113
    点赞
  • 952
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: TCP/IP协议指传输控制协议/因特网协议,是互联网的核心协议之一。这种协议提供了一个网络协议栈,用于传输数据包并确保它们完整地在计算机网络中传输。TCP/IP协议包括了四个层次:应用层、传输层、网络层以及数据链路层。TCP/IP是用于连接到因特网的主要网络协议之一,是因特网的核心协议,它可以很好地支持各种不同的网络应用程序。 TCP/IP协议详解是一份涵盖TCP/IP所有内容的PDF文档,包括TCP/IP协议的工作原理、原理和基本知识,提供了完整的TCP/IP协议的技术细节。文档从网络通信开发的基础知识开始,逐步介绍了TCP/IP协议的基础, 包括:物理层、数据链路层、网络层、传输层和应用层,同时也对各种协议和技术如ARP、IPTCP、UDP、DNS、HTTP、FTP等进行了具体的解释,使读者能够更好地理解TCP/IP协议的技术内容。 总的来说,TCP/IP协议详解是一份非常有用的技术文档,它为开发人员、系统管理员以及网络工程师提供了完善的TCP/IP知识和基础,是网络通信开发不可缺少的参考文档,在今天互联网极为发达的背景下,值得深入学习和掌握。 ### 回答2: TCP/IP协议是计算机网络中常用的协议,它把数据分为若干个分组在网络中传输。对于网络系统的规划、安装、实施、使用和管理,了解TCP/IP协议是十分必要的。TCP/IP协议详解是一本对于TCP/IP协议的解释和深入说明的著作,对于网络从业人员、计算机科学学生,以及计算机爱好者来说都是一本非常好的参考书。 这本书包括了TCP/IP协议的基本概念、网络层、传输层以及应用层等方面的内容,其中涵盖了TCP协议和IP协议的历史、原理、实现和应用。阅读这本书,读者能深入理解网络各层级的协议服务以及它们之间的关系。 此外,本书还介绍了TCP/IP协议在局域网、广域网、因特网和移动网络之间的应用,包括主机地址、路由器、网关等基础设施的配置和管理. 如果您想以更深入的角度了解TCP/IP协议,这本书是不二之选。而且该PDF文件的下载也很容易,只需要在互联网上搜索即可找到,下载后可以离线阅读,方便学习和查阅。 ### 回答3: TCP/IP是Internet的基础协议,而TCP/IP协议详解则是系统地介绍了TCP/IP协议,对于理解和掌握TCP/IP协议体系结构、各个协议的功能、通信流程以及实现方法等相关知识是非常必要的。 TCP/IP协议详解这本书从简单到复杂,从底层实现到应用层的协议,详尽地介绍了各种协议的功能、特点和使用方法,并提供了大量的实例和应用场景,以便读者可以很好地理解协议的整体结构和各个模块之间的关系。 本书介绍了TCP/IP协议协议栈(TCP/IP协议族中标准的网络层和传输层协议)和其他重要的应用层协议,如DNS、SMTP、HTTP等。并通过分析各种协议的特点、功能、应用场景等来帮助读者更好地理解协议的使用方法和实现原理。 此外,本书还介绍了TCP/IP协议的演变历程、一些常见网络问题及其排除方法、网络性能优化等方面的内容,使得读者准确理解TCP/IP协议,并且能够灵活地使用它们,从而帮助读者更好地了解和应用网络。 总之,TCP/IP协议详解这本书是一本非常权威、全面、详尽的TCP/IP教材,对于网络管理员和网络从业人员来说,是一本不可多得的优秀参考书。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值