TCP/IP协议 轮廓性 总结

来源:互联网 发布:vb.net 实例化 编辑:程序博客网 时间:2024/05/23 14:12

互联网核心是一系列的协议,TCP/IP协议是使用最广泛的互联网通信协议。

为减少协议复杂性,大多数网络模型都是按分层的方式来组织,有分7层(OSI模型),有分4层(TCP/IP模型)。TCP/IP协议分5层,每一层都为上一层提供服务,每一层也有自己的功能。越底层越靠近硬件,越顶层越靠近用户。无论分几层,内在的协议都没有改变。

实体层(物理层)

把电脑用光缆,无线电波等物理方式连接起来的层次。它主要规定了网络的一些电气特征,作用是负责传送0,1的电信号。

链接层(数据链路层)

实体层上方,规定读取电信号方式,电信号分组以及每个电信号的分配方式。早期每家公司都有自己不同的电信号分配方式,后来逐渐被以太网协议占主导地位。该协议规定,一组电信号构成一个数据包,即“帧”。每个帧分两部分:标头和数据。标头包含数据的一些说明项,如发送者,接受者,数据类型等,长度固定为18个Byte。数据则是数据包的具体内容,长度规定为最短46Byte,最长1500Byte。因此整个帧的长度为64Byte~1518Byte。数据过长时会分割帧。

定义地址。对于以太网,连入网络的所有设备都必须有网卡接口,数据包必须从A网卡传送到B网卡。网卡地址即数据包的发送地址和接收地址,即MAC地址(物理地址),有了MAC地址,即可定位网卡和数据包的路径了。网卡地址在生产过程即被固定,且全球唯一,长度48位,通常用12个16进制表示。前6个十六进制为厂商编号,后6位为该厂商的网卡流水号。

查看主机MAC地址方法:


A网卡如何知道B网卡的MAC地址呢?用ARP协议(地址解析协议)

广播发送方式。有了MAC地址,以太网就能向本网络内所有计算机发送数据包,让每台计算机自己判断是否为接收方。如1计算机向2计算机发送数据包,同一子网络的3,4,5计算机都会收到该包,它们读取包的标头,找到接收方的MAC地址后与自己的MAC地址比较,如果相同,就接受,否则丢弃。

有了数据包定义,网卡MAC地址,广播的发送方式,链接层就可以在多个计算机之间传送数据了。


网络层

以太网协议,单单依靠MAC地址发送数据的重大缺点是:所有成员人手一包,效率低;局限在发送方所在的子网络。如果A计算机和B计算不再同一子网络,用广播方式数据是不能互传的。

所以,就必须有网络层的存在。其作用是引进一套新的地址,即网络地址,简称网址,能够是我们区分不同计算机是否在同一子网络。而计算机也就有了两个地址,一个是MAC地址,一个是IP地址IP地址与底层硬件无关。这两个地址没有任何联系。MAC地址绑定在网卡上,IP地址由管理员分配。IP地址确定计算机所在的子网络,MAC地址则将数据包送到该子网络的目标网卡中,也就是说,先处理IP地址,再处理MAC地址。

规定网络地址的协议,即IP协议。目前广泛采用的是IP协议第四版,简称IPv4。该版本规定了网址由32个二进制位组成。习惯上,我们用分成四段的十进制数来表示IP地址:0.0.0.0~255.255.255.255。

互联网上的每台计算机都会分配到一个IP地址,该地址分为两个部分:前一部分代表网络ID,后一部分代表主机ID。如IP地址:172.16.254.1,假定网络部分是前24位(172.16.254),则主机部分就是1。处于同一子网络的计算机,IP地址的网络部分必须相同。

IP地址中网络部分到底占几位,没有确定,因此无法从IP地址上确切判断网络部分。

127.0.0.1是特殊的IP地址,代表主机,用于测试本机上的TCP/IP协议是否能正常工作。可ping一下该IP地址确定下。

如何从IP地址判断两台计算机是否属于同一子网络?需要子网掩码。

TCP/IP上的每台主机还有一个32位的子网掩码,用来区分IP地址的网络号和主机号。

IP地址 & 子网掩码 =IP地址的网络号网络号是一台主机所处的主机编号。形式等同IP地址,其网络部分全为1,主机部分全为0。如,IP = 172.16.254.1,若已知网络号为前24位, 主机部分后8位,则子网掩码是1111 1111.1111 1111. 1111 1111.0000 0000,十进制即255.255.255.0。

将两个IP地址按位与子网掩码后,比较两个结果,如果相同,表明在同一子网络中。

总之,IP协议的作用就是:1,为每台计算机分配IP地址;2,确定哪些网络在同一子网络

根据IP协议发送的数据包即IP数据包,其中必定包含IP地址信息。因为以太网数据包中只包含MAC地址栏位,而没有IP地址栏位。因此,我们可以直接把IP数据包直接放进以太网数据包的“数据”部分。这就体现了互联网分层的好处:上层的变动完全不涉及下层的结构。具体来书,IP数据包也分为“标头”和“数据”。标头部分包括版本,长度,IP地址等信息,长度为20到60Byte,数据部分则是IP数据包的具体内容。整个数据包的总长为65535Byte。即IP数据包的数据部分最长65515Byte。因为以太网数据包的数据部分最长只有1500Byte,因此,超出时将分割处理。

网络层的ARP协议。IP数据包放在以太网数据包中发送,我们必须知道的两个地址:MAC地址,对方IP地址(通常情况下可知)。对于MAC地址,需要一种机制能够从IP地址中获取。

情况一:两台主机不在同一子网络,此时无法获取MAC地址,只能把数据包送到子网络连接处的网关(gateway),让网关处理去。

情况二:在同一子网络,使用ARP协议。ARP协议发出一个包含在以太网数据包中的数据包,其中包含所要查询的主机IP地址,在对方MAC地址一栏上填上FF:FF:FF:FF:FF:FF,表示这是一个“广播”地址。其所在子网络的每台主机都会接收到该数据包,从中去出IP地址,与自身IP地址比较。如果相同,则回复对方报告自己的MAC地址,否则丢弃。


传输层

同一主机在上网时如何区分数据包的内容属于哪一个运行程序的,如网页,QQ?

为了区分开来,我们需要一个参数,即端口“port”表示这个数据包供给哪个程序、线程用。端口其实是每个使用网卡的程序的编号。每个数据包发到主机的特定端口,由端口决定哪一个程序取到自己需要的数据。

端口是0~65535之间的一个整数,正好16为二进制数。0~1023的端口被系统占用。应用程序会随机选用1023后的一个端口与服务器的相应端口联系。 一台主机不同进程绑定到不同端口,这些进程访问网络就不会相互干扰

传输层的功能就是建立“端口到端口”的通信,只要确定主机和端口就可实现程序之间的交流。而网络层则是建立“主机到主机”的通信。Unix系统把主机+端口统称为套接字(socket)。

把数据包加到端口信息,需要新的协议,最简单的是UDP协议,格式几乎就是在数据前面加上端口号。UDP协议向应用程序提供一种面向无连接的服务(不需要建立链接,应用程序采用UDP协议无需建立和链接),通常运用于不需可靠数据传输的网络环境中(UDP不保证数据报按顺序,正确传达目的地,这项任务有应用程序完成)。

UDP数据包:标头+数据。标头主要定义发出端口和接收端口。数据部分是具体内容。整个UDP数据包放入IP数据包的数据部分。优点:简单容易实现。缺点:可靠性差,数据包发出不知对方是否收到。

为提高网络可靠性,就产生了TCP协议,一种有确认机制的UDP协议,没发出一个数据包就要求确认。如果收不到确认,发出方就会重发。TCP协议缺点:过程复杂,实现困难,消耗较多资源。

TCP数据包和UDP数据包一样内嵌在IP数据包的数据部分。TCP数据包没有长度限制,理论上可无限长,但为保证效率,通常不会超过IP数据包的长度,以确保单个TCP数据包不被分割。

用TCP通信的过程

建立连接

1,连接的发起端(客户端)向目标计算机(服务器)发送一个请求建立连接的数据包

2,服务器收到请求,对客户端的同步信号作出回应,并发送自己同步信号给客户端

3,客户端对服务器发来的同步信号进行响应,完成建立连接。此过程成为第三次握手


关闭

1,请求主机发送一个关闭连接的请求给另一方

2,另一方收到请求发送一个接受请求的确认数据包,并关闭socket连接

3,主机收到确认数据包后发送已收到的确认数据包,请求主机关闭它的socket


应用层

应用程序收到传输层的数据,接下来就要尽心解读。应用层的作用就是对来自网络的各种数据包,规定应用程序的数据格式。

比如,TCP协议为各种应用程序传递数据,如Email,www,FTP等,那么就必须有不同协议规定电子邮件,网页,FTP数据的格式,这些应用程序协议就构成了应用层。这些协议数据放在TCP数据包的数据部分。



0 0
原创粉丝点击