TCP/IP协议详解

内容提要

1.TCP/UDP
2.IPv6

1.TCP/UDP
面向连接与面向无连接
端口
三次握手
TCP报文格式
UDP报文格式

端口
端口将应用进程与IP网络相关联,是应用进程的地址标识。
一个端口是一个16位号码。
端口分为公用和临时两种:
公用端口:属于标准服务器,由权威机构IANA统一分配,从1~1023。
临时端口:用于客户,从1024~65535。
                                      

三次握手
TCP连接的建立
第一次握手:客户端TCP首先给服务器端TCP发送一个特殊的TCP数据段。该数据段不包含应用层数据,并将头部中的SYN位设置为1,所以该数据段被称为SYN数据段。另外,客户选择一个初始序列号SEQ,设SEQ=x并将这个编号放到初始的TCP SYN数据段的序列号字段中。该数据段被封装到一个IP数据报中,并发送给服务器。
第二次握手:一旦装有TCP SYN数据段的IP数据报到达了服务器主机,服务器将从该数据报中提取出TCP SYN数据段,给该连接分配TCP缓冲区和变量,并给客户TCP发送一个允许连接的数据段。这个允许连接的数据段也不包含任何应用层数据。但是,它的头部中装载着3个重要信息。首先,SYN被设置为1;其次,TCP数据段头部的确认字段被设置为x+1;最后,服务器选择自己的初始顺序号,SEQ=y,并将该值放到TCP数据段头部的序列号字段中。
第三次握手:在接收到允许连接数据段之后,客户也会给连接分配缓冲区和变量。客户端主机还会给服务器发送另一个数据段,对服务器的允许连接数据段给出确认。

TCP协议中连接建立的过程
                                                                                      

异常情况
                                                  

呼叫碰撞情况

                                                                     

连接的释放

第一次握手:由进行数据通信的任意一方提出要求释放连接的请求报文段。 
第二次握手:接收端收到此请求后,会发送确认报文段,同时当接收端的所有数据也都已经发送完毕后,接收端会向发送端发送一个带有其自己序号的报文段。
第三次握手:发送端收到接收端的要求释放连接的报文段后,发送反向确认。

                                                         

白话版三次握手和四次挥手

三次握手流程:
1、(请求)客户端发个请求“开门呐,我要进来”给服务器。
2、(应答)服务器发个“进来吧,我去给你开门”给客户端。
3、(再次确确认)客户机很客气的发个“谢谢,我要进来了”给服务器。

四次挥手流程:
1、客户端发个“时间不早了,我要走了”给服务器,等服务器送他。
2、服务器听到,发个“我知道了,那我送你出门吧”给客户端,等客户端走。
3、服务器把门关上后,发个“我关门了”给客户端,然后等客户端走。
4、客户端发个“我知道了,我走了”,之后自己就走了。

TCP数据报文格式


                                                               

各部分说明:

                                             

源端口和目的端口字段——各占 2 字节。标识了发送方和接收方的应用进程。

序号字段——占 4 字节。TCP 连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。

确认号字段——占 4 字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。 

数据偏移——占 4  bit,它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。

保留字段——占 6 bit,保留为今后使用,但目前应置为 0。
紧急比特 URG —— 当 URG =1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。 
确认比特 ACK —— 只有当 ACK =1 时确认号字段才有效。当 ACK  0 时,确认号无效。
推送比特 PSH (PuSH) —— 接收 TCP 收到推送比特置 1 的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付。 
复位比特 RST (ReSeT) —— 当 RST =1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,通知一下对方。
同步比特 SYN —— 同步比特 SYN 置为 1,就表示这是一个连接请求或连接接受报文。
终止比特 FIN (FINal) —— 用来释放一个连接。当FIN  1 时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。
窗口字段 —— 占 2 字节。窗口字段用来控制对方发送的数据量,单位为字节。TCP 连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。
检验和 —— 占 2 字节。检验和字段检验的范围包括首部和数据和伪段头(不是TCP里的信息,但是计算校验和的时候也计算了的内容:IP地址,TCP数据段长度,协议型)。
紧急指针字段 —— 占 16 bit。紧急指针指出在本报文段中的紧急数据的位置。 
选项字段 —— 长度可变。TCP 规定了二种选项,最大报文段长度 MSS (Maximum Segment Size)。MSS 告诉对方 TCP:“我的缓存所能接收的报文段的数据字段的最大长度是 MSS 个字节。” 和窗口扩大因子,用于扩大接收方窗口。
填充字段 —— 这是为了使整个首部长度是 4 字节的整数倍。

UDP报文头结构

                                                

IPv6
IPv4的不足
地址基本耗尽,这是当前最棘手的问题 
路由表越来越大 
功能不足,缺少对多媒体信息传输的支持 
缺少对安全的支持 
缺少对主机漫游的支持

IPv6的主要改进

更大的地址空间:128位
灵活的首部格式:用一系列固定格式的扩展首部取代了IPv4中可变长度的选项字段
简化了协议:如取消了首部的校验和字段,分段只能在源端进行
允许对网络资源的预分配,支持实时图像等要求保证一定的带宽和时延的应用
允许协议继续演变,增加新的功能

IPv6数据包格式

                 

              

扩展头部


             











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

软件测试李同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值