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数据包格式

                 

              

扩展头部


             











  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
TCP/IP详解·卷2:实现》完整而详细地介绍了TCP/IP协议是如何实现的。书中给出了约500个图例,15000行实际操作的C代码,采用举例教学的方法帮助你掌握TCP/IP实现。《TCP/IP详解·卷2:实现》不仅说明了插口API和协议族的关系以及主机实现与路由器实现的差别。还介绍了4.4BSD-Lite版的新的特点。《TCP/IP详解·卷2:实现》适用于希望理解TCP/IP协议如何实现的人,包括编写网络应用程序的程序员以及利用TCP/IP维护计算机网络的系统管理员。 目录 · · · · · · 第一章 概述 1.1 引言 1.2 源代码表示 1.3 历史 1.4 应用编程接口 1.5 程序示例 1.6 系统调用和库函数 1.7 描述符 1.8 网络实现概述 1.9 mbuf与输出处理 1.10 输入处理 1.11 网络实现概述 1.12 中断级别与并发 1.13 源代码组织 1.14 测试网络 1.15 小结 第二章 mduf:存储器缓存 2.1 引言 2.2 代码介绍 2.3 mduf的定义 2.4 mduf结构 2.5 简单的mduf宏和函数 2.6 m_devget和m_pullup函数 2.7 mduf宏和函数的小结 2.8 Net/3联网数据结构小结 2.9 m_copy和簇引用记数 2.10 其他选择 2.11 小结 第三章 接口层 3.1 引言 3.2 代码介绍 3.3 ifnet结构 3.4 ifaddr结构 3.5 sockaddr结构 3.6 ifnet与ifaddr的专用化 3.7 网络初始化概述 3.8 以太网初始化 3.9 SLIP初始化 3.10 环回初始化 3.11 if_attach函数 3.12 ifinit函数 3.13 小结 第四章 接口:以太网 4.1 引言 4.2 代码介绍 4.3 以太网接口 4.4 ioctl系统调用 4.5 小结 第五章 接口:SLIP和环回 5.1 引言 5.2 代码介绍 5.3 SLIP接口 5.4 环回接口 5.5 小结 第六章 IP编址 6.1 引言 6.2 代码介绍 6.3 接口和地址小结 6.4 sockaddr_in结构 6.5 in_ifaddr结构 6.6 地址指派 6.7 接口ioctl处理 6.8 internet实用函数 6.9 ifnet实用函数 6.10 小结 第七章 域和协议 7.1 引言 7.2 代码介绍 7.3 domain结构 7.4 protosw结构 7.5 IP的domain和protosw结构 7.6 pffindproto和pffindtype函数 7.7 pfctlinput函数 7.8 IP初始化 7.9 sysctl系统调用 7.10 小结 第八章 IP:网际协议 8.1 引言 8.2 代码介绍 8.3 IP分组 8.4 输入处理:ipintr函数 8.5 转发:ip_forward函数 8.6 输出处理:ip_output函数 8.7 Internet检验和:in_cksum函数 8.8 setsockopt和getsockopt系统调用 8.9 ip_sysctl函数 8.10 小结 第九章 IP选项处理 9.1 引言 9.2 代码介绍 9.3 选项格式 9.4 ip_dooptions函数 9.5 记录路由选项 9.6 源站和记录路由选项 9.7 时间戳选项 9.8 ip_insertoptions函数 9.9 ip_pcbopts函数 9.10 一些限制 9.11 小结 第十章 IP的分片与重装 10.1 引言 10.2 代码介绍 10.3 分片 10.4 ip_optcopy函数 10.5 重装 10.6 ip_optcopy函数 10.7 ip_slowtimo函数 10.8 小结 第十一章 ICMP:Internet控制报文协议 第十二章 IP多播 第十三章 IGMP:Internet组管理协议 第十四章 IP多播选路 第十五章 插口层 第十六章 插口I/O 第十七章 插口选项 第十八章 Radix树路由表 第十九章 选路请求和选路消息 第二十章 选路接口 第二十一章 ARP:地址解析协议 第二十二章 协议控制块 第二十三章 UDP:用户数据报协议 第二十四章 TCP:传输控制协议 第二十五章 TCP的定时器 第二十六章 TCP输出 第二十七章 TCP的函数 第二十八章 TCP的输入 第二十九章 TCP的输入(续) 第三十章 TCP的用户需求 第三十一章 BPF:BSD分组过滤程序 第三十二章 原始IP 结束语 附录A 部分习题的解答 附录B 源代码的获取 附录C RFC 1122的有关内容 参考文献
### 回答1: TCP/IP协议详解卷1(英文版)是一本经典的网络技术书籍,对于理解和掌握TCP/IP协议是非常有帮助的。 本书首先介绍了网络通信的基本原理和TCP/IP协议的体系结构,然后详细讲解了每一层协议的功能、特点和实现方法。其中,TCP协议IP协议是重点的讲解对象,分别从数据结构、传输机制、拥塞控制、错误处理等多个方面逐一剖析,涵盖了从实现到应用的全过程。 另外,本书还介绍了TCP/IP协议的各种应用协议,如HTTP、FTP、SMTP等,以及网络安全、路由选择、网络管理等相关技术。通过阅读本书,不仅可以理解TCP/IP协议的原理和流程,还可以掌握实际应用中的场景、需求和解决方案。 总的来说,TCP/IP协议详解卷1(英文版)是一本系统而详尽的网络技术著作,对于网络技术爱好者、工程师以及网络管理员都是一本不可多得的参考书籍。无论是学习TCP/IP协议的初学者还是深入研究的专业人员,都可以从中获得丰富的知识和经验。 ### 回答2: TCP/IP协议详解卷1英文版,是一本介绍互联网传输控制协议和网络互联协议的著作。本书从TCP/IP的电脑网络体系结构出发,介绍了TCP、UDP、IP、ICMP、ARP等网络协议的原理、功能和应用,进一步讲解了TCPIP协议在数据传输、数据包格式、错误处理和路由选择等方面的应用。 本书虽然详细介绍了TCP/IP协议的技术细节,但是作者用通俗易懂的语言阐述了其内在原理和运作机制,使得普通读者也能够理解。同时,作者介绍了TCP/IP协议在各种应用场景下的具体实现和应用方法,从而为网络管理员和网络开发者提供了宝贵的参考。 总之,TCP/IP协议详解卷1英文版是一本介绍TCP/IP协议基础知识的重要参考书,对于想要深入了解互联网传输控制协议和网络互联协议的人群具有重要的参考价值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

软件测试李同学

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

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

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

打赏作者

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

抵扣说明:

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

余额充值