标准TCP/IP协议栈模型
来源:互联网 发布:java apt 废弃 编辑:程序博客网 时间:2024/06/08 01:26
一、标准tcp/ip协议栈模型
标准TCP/IP协议是用于计算机通信的一组协议,通常被称为TCP/IP协议栈,以它为基础组建的互联网是目前国际上规模最大的计算机网络。
TCP/IP协议栈是一组协议,包括TCP、Ip、UDP、ICMP、RIP、TELNETFTP、SMTP、ARP和TFTP等多种协议,模型如图
应用层传输层网络层网络接口层(1)网络接口层:模型的基层,负责数据帧发送和传输,网络接口层将帧格式的数据放到网络上,或从网络上把数据帧取下来。这是最接近硬件的底层
(2)网络层:通过互联协议将数据包封装成互联网数据包(IP packet),并运行必要的路由算法。这里有四种互联协议。
网际协议:负责在主机和网络之间的路径寻址和数据包路由。
地址解析协议ARP:获得同一物理网络中的主机硬件地址。
网际控制消息协议ICMP:发送消息,并报告有关数据包的传送错误。
互联组管理协议IGMP:用来实现本地多路广播路由器报告。
(3)传输层:传输协议在主机之间提供通信回话。传输协议的选择根据数据传输方式而定。主要有TCP(为应用程序提供可靠的通信连接,使用于一次传输大批数据的情况,并适用于要求得到响应的应用程序)和UDP(提供无连接通信,且不对传送包进行可靠性确认。适用于一次传输小量数据的情况,可靠性则由应用层确认)
(4)应用层:应用程序通过这一层访问网络 常见的FTP、HTTP、DNS和TELNET协议。
在TCP/IP协议模型的四层协议当中,各层数据包封装情况如图。发送数据时,将数据从最上层到最下层依次打包(加上报头和部分尾部信息);在接收数据时,则将数据从最下层到最上层依次拆包(去掉报头和部分尾部信息)这些打包和拆包操作就是TCP/IP协议栈完成。
MAC报头IP报头TCP报头数据二、BSD面向连接的TCP通信编程TCP/IP协议为上层应用程序提供了同意的BSD Socket编程接口。进行上层应用时只需调用BSD Socket接口提供的函数即可。
图为面向连接的Socket通信的双方执行函数流程。使用TCP协议的通信双方实现数据通信的基本流程如下
建立连接的步骤:
1、首先服务器端需要以下工作:
(1)调用socket()函数,建立Socket对象,指定通信协议。
(2)调用bind()函数,将创建的Socket对象与当前主机的某一个IP地址和TCP端口绑定。
(3)调用listen()函数。使Socket对象处于监听状态,并设置监听队列大小。
2、客户端的准备工作:
(1)调用socket函数,建立Socket对象,指定与服务器端相同的通信协议。
(2)应用程序可以调用bind()函数为其绑定IP地址和端口,此工作也可交给TCP/IP完成。
3、建立通信连接
(1)客户端调用connect()函数,向服务器端发出连接请求。
(2)服务端监听到该请求,调用accept()函数接受请求,建立连接,并返回一个新的Socket文件描述符以专门处理该连接。
4、通信双方发送/接收数据
(1)服务器端和客户端分别调用write()或send()函数发送数据read或recv函数接收数据。
(2)通信完成后,通信双方都需要调用close或shutdown来关闭Socket。
协议处理流程
三、轻量级TCP/IP协议和标准TCP/IP比较
- 标准TCP/IP协议栈模型
- TCP/IP协议模型
- TCP/IP协议栈和 ISO模型
- 浅谈TCP-IP协议模型
- TCP/IP协议分层模型
- TCP/IP模型及TCP/UDP协议
- OSI7层模型与TCP/IP协议栈4层
- TCP/IP 协议栈及 OSI 参考模型详解
- TCP/IP 协议栈及 OSI 参考模型详解
- TCP/IP 协议栈及 OSI 参考模型详解
- TCP/IP 协议栈及 OSI 参考模型详解
- TCP/IP协议栈及OSI参考模型详解
- TCP/IP协议栈及OSI参考模型详解
- TCP/IP协议栈及OSI参考模型详解
- TCP/IP 协议栈及 OSI 参考模型详解
- TCP/IP协议栈及OSI参考模型详解
- OSI7层模型与TCP/IP协议栈4层
- TCP/IP协议栈
- js之ajax
- 微软等数据结构+算法面试100题(38)-- 二叉树中任意两个节点间的最大距离
- 嵌入式Linux文件系统
- Delphi 数据类型列表
- cocos2d-x 升级2.0以后报错 Assertion failed: (getShaderProgram()), function draw,
- 标准TCP/IP协议栈模型
- uva 11437 Triangle Fun
- TTL电平与CMOS电平的区别
- ScriptCase新增的安全模块(RBAC)
- [10月17日的脚本] 删除Microsoft Exchange 2010 中指定域名的E-mail地址
- 软件联网模式及监控远程无法打开检查判断
- 微软等数据结构+算法面试100题(39)-- 左旋数组中查找
- sizeof(一)
- JavaSE第十四讲:面向对象详解