怎样通过TCP/IP协议向网上传数据报???
发布网友
发布时间:2022-05-05 01:00
我来回答
共1个回答
热心网友
时间:2022-06-28 01:14
TCP/IP这个协议遵守一个四层的模型概念:应用层、传输层、互联层和网络接口层。
网络接口层
模型的基层是网络接口层。负责数据帧的发送和接收,帧是独立的网络信息传输单元。网络接口层将帧放在网上,或从网上把帧取下来。
互联层
互联协议将数据包封装成internet数据报,并运行必要的路由算法。
这里有四个互联协议:
网际协议IP:负责在主机和网络之间寻址和路由数据包。
地址解析协议ARP:获得同一物理网络中的硬件主机地址。
网际控制消息协议ICMP:发送消息,并报告有关数据包的传送错误。
互联组管理协议IGMP:被IP主机拿来向本地多路广播路由器报告主机组成员。
传输层
传输协议在计算机之间提供通信会话。传输协议的选择根据数据传输方式而定。
两个传输协议:
传输控制协议TCP:为应用程序提供可靠的通信连接。适合于一次传输大批数据的情况。并适用于要求得到响应的应用程序。
用户数据报协议UDP:提供了无连接通信,且不对传送包进行可靠的保证。适合于一次传输小量数据,可靠性则由应用层来负责。
应用层
应用程序通过这一层访问网络。
网络接*术
IP使用网络设备接口规范NDIS向网络接口层提交帧。IP支持广域网和本地网接*术。
串行线路协议
TCP/IPG一般通过internet串行线路协议SLIP或点对点协议PPP在串行线上进行数据传送。(是不是我们平时把它称之为异步通信,对于要拿LINUX提供建立远程连接的朋友应该多研究一下这方面的知识)?
IP是一个无连接的协议,主要就是负责在主机间寻址并为数据包设定路由,在交换数据前它并不建立会话。因为它不保证正确传递,另一方面,数据在被收到时,IP不需要收到确认,所以它是不可靠的。有一些字段,在当数据从传输层传下来时,会被附加在数据包中,我们来看一下这些字段:
源IP地址:用IP地址确定数据报发送者。
目标IP地址:用IP地址确定数据报目标。
协议:告知目的机的IP是否将包传给TCP或UDP。
检查和:一个简单的数学计算,用来证实收到的包的完整性。
TTL生存有效时间:指定一个数据报被丢弃之前,在网络上能停留多少时间(以秒计)。它避免了包在网络中无休止循环。路由器会根据数据在路由器中驻留的时间来递减TTL。其中数据报通过一次路由器,TTL至少减少一秒。根据我们前面提到关于ARP的知识,如果IP地址目标为本地地址时,IP将数据包直接传给那个主机;如果目标地址为远程地址的话,IP在本地的路由表中查找远程主机的路由(看来好象我们平时拨114一样)。如果找到一个路由,IP用它传送数据包。如果没找到呢,就会将数据包发送到源主机的缺省网关,也称之为路由器。(很多时候一直在搞网关和路由器的定义,其实我觉得在学的时候不一定死抠概念,现在硬件和软件结合的产品越来越多了,一时很分清的,只要我们运用的时候可以解决实际问题嘛。)这样当路由器收到一个包后,该包向上传给IP:
(1)如果交通阻塞(听起来蛮可怕的),包在路由器中停滞,TTL至少减1或更多。要是它降到0的话,包就会被抛弃。
(2)如果对于下一网络来说包太大的话,IP会将它分割成若干个小包。
(3)如果包被分解,IP为每个新包制造一个新头,其中包括:一个标志,用来显示其它小包在其后;一个小包ID,用来确定所有小包是一起的;一个小包偏移,用来告诉接收主机怎么重新组合它们。
(4)IP计算一个新的检验和。
(5)IP获取一个路由的目标硬件地址。
(6)IP转发包。
在下一主机,包被发送到TCP或UDP。每个路由器都要重复该过程。直到包到达最终目的地。当包到达最终目的地后,IP将小包组装成原来的包。
TCP是一种可靠的面向连接的传送服务。它在传送数据时是分段进行的,主机交换数据必须建立一个会话。它用比特流通信,即数据被作为无结构的字节流。通过每个TCP传输的字段指定顺序号,以获得可靠性。如果一个分段被分解成几个小段,接收主机会知道是否所有小段都已收到。通过发送应答,用以确认别的主机收到了数据。对于发送的每一个小段,接收主机必须在一个指定的时间返回一个确认。如果发送者未收到确认,数据会被重新发送;如果收到的数据包损坏,接收主机会舍弃它,因为确认未被发送,发送者会重新发送分段。
端口
SOCKETS实用程序使用一个协议端口号来标明自己应用的唯一性。端口可以使用0到65536之间的任何数字。在服务请求时,操作系统动态地为客户端的应用程序分配端口号。
套接字
套接字在要领上与文件句柄类似,因为其功能是作为网络通信的终结点。一个应用程序通过定义三部分来产生一个套接字:主机IP地址、服务类型(面向连接的服务是TCP,无连接服务是UDP)、应用程序所用的端口。
TCP端口
TCP端口为信息的传送提供定地点,端口号小于256的定义为常用端口。
TCP的三次握手
TCP对话通过三次握手来初始化。三次握手的目的是使数据段的发送和接收同步;告诉其它主机其一次可接收的数据量,并建立虚连接。我们来看看这三次握手的简单过程:
(1)初始化主机通过一个同步标志置位的数据段发出会话请求。
(2)接收主机通过发回具有以下项目的数据段表示回复:同步标志置位、即将发送的数据段的起始字节的顺序号、应答并带有将收到的下一个数据段的字节顺序号。
(3)请求主机再回送一个数据段,并带有确认顺序号和确认号。
TCP滑动窗口
TCP滑动窗口用来暂存两台主机间要传送的数据,有点类似CACHE。每个TCP/IP主机有两个滑动窗口:一个用于接收数据,另一个用于发送数据。