Android网络编程-TCP/IP协议
副标题[/!--empirenews.page--]
在Android网络编程-计算机网络基础一文中得知,IP协议属于网络层,TCP、UDP协议属于传输层。 IP协议是TCP/IP协议族的动力,它为上层协议提供无状态、无连接、不可靠的服务。 TCP协议是面向连接的传输层协议,提供一种面向连接的、可靠的字节流服务。 UDP协议是面向无连接的传输层协议,提供面向事务的简单不可靠信息传输服务。 数据报文 在不同层传输的数据单位名称不同,在网络层传输的叫数据报,在传输层传输的叫报文段。 IP数据报 IP数据报格式如下图: 各个字段的详细说明:名称长度说明版本4bitIP协议的版本,目前的IP协议版本号为4,下一代IP协议版本号为6首部长度4bitIP报头的长度,最大长度60字节(15*4), 当IP报文长度超过传输网络的MTU(最大传输单元)时必须分片,此标识表示同一个数据报的分片。标志3bitR、DF、MF三位,目前只有后两位有效。
片偏移以8个字节为偏移单位。生存时间8bitTTL (Time To Live)表示数据报在网络中的寿命,其单位为秒。 在目前的实际应用中,常以“跳”为单位。协议8bit指出IP报文携带的数据使用的哪种协议,以便目的主机的IP层能知道要将数据报上交到哪个进程。 TCP的协议号为6,UDP的协议号为17。 ICMP的协议号为1,IGMP的协议号为2.首部校验和16bit计算IP头部的校验和,检查IP报头的完整性。源地址32bit标识IP数据报的源端设备。目的地址32bit标识IP数据报的目的地址。可选字段长度可变1~40 字节,用于增加IP数据报的控制功能。填充保证IP首部长度是4字节的整倍数 TCP报文 名称长度说明源端口16bit数据发送方的端口号目的端口16bit数据接受方的端口号序号32bit本数据报文中的的第一个字节的序号 UDP报文 相对于TCP报文,UDP报文简单了很多。 名称长度说明源端口16bit数据发送方的端口号目的端口16bit数据接受方的端口号包长度16bitUDP首部的长度和数据的长度之和。单位为字节校验和16bit用来检验首部和数据两部分的正确性 TCP三次握手和四次挥手TCP用三次握手来创建连接,使用四次分手来释放连接。 三次握手 三次握手的目的是同步连接双方的序列号和确认号并交换TCP窗口大小的信息。 握手过程:
完成了三次握手,客户端和服务器就可以开始传送数据了。 四次挥手 当客户端和服务端传输数据完毕后,需要断开TCP连接。TCP断开的过程,就是四次挥手。
TCP三次握手的必要性 防止服务器端因接收了早已失效的连接请求报文,从而一直等待客户端请求,最终导致形成死锁、浪费资源。 TCP四次挥手的必要性 为了保证通信双方都能通知对方,需释放、断开连接。 为什么客户端关闭连接前要等待2MSL时间
(编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |