udp协议详解
应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。 传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。网络接口层:对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial Line等)来传送数据。TCP/IP中的协议以下简单介绍TCP/IP中的协议都具备什么样的功能,都是如何工作的:1. IP网际协议IP是TCP/IP的心脏,也是网络层中最重要的协议。IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层---TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。 高层的TCP和UDP服务在接收数据包时,通常假设包中的源地址是有效的。也可以这样说,IP地址形成了许多服务的认证基础,这些服务相信数据包是从一个有效的主机发送来的。IP确认包含一个选项,叫作IP source routing,可以用来指定一条源地址和目的地址之间的直接路径。对于一些TCP和UDP的服务来说,使用了该选项的IP包好象是从路径上的最后一个系统传递过来的,而不是来自于它的真实地点。这个选项是为了测试而存在的,说明了它可以被用来欺骗系统来进行平常是被禁止的连接。那么,许多依靠IP源地址做确认的服务将产生问题并且会被非法入侵。

端口的协议端口
如果把IP地址比作一间房子 ,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口可以有65536(即:2^16)个之多!端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535(2^16-1)。在Internet上,各主机间通过TCP/IP协议发送和接收数据包,各个数据包根据其目的主机的ip地址来进行互联网络中的路由选择,把数据包顺利的传送到目的主机。大多数操作系统都支持多程序(进程)同时运行,那么目的主机应该把接收到的数据包传送给众多同时运行的进程中的哪一个呢?显然这个问题有待解决,端口机制便由此被引入进来。本地操作系统会给那些有需求的进程分配协议端口(protocol port,即我们常说的端口),每个协议端口由一个正整数标识,如:80,139,445,等等。当目的主机接收到数据包后,将根据报文首部的目的端口号,把数据发送到相应端口,而与此端口相对应的那个进程将会领取数据并等待下一组数据的到来。说到这里,端口的概念似乎仍然抽象,那么继续跟我来,别走开。端口其实就是队,操作系统为各个进程分配了不同的队,数据包按照目的端口被推入相应的队中,等待被进程取用,在极特殊的情况下,这个队也是有可能溢出的,不过操作系统允许各进程指定和调整自己的队的大小。不光接受数据包的进程需要开启它自己的端口,发送数据包的进程也需要开启端口,这样,数据包中将会标识有源端口,以便接受方能顺利地回传数据包到这个端口。端口详解每种网络的服务功能都不相同,因此有必要将不同的封包送给不同的服务来处理,当你的主机同时开启了FTP与WWW服务时,别人送来的资料封包,就会依照 TCP 上面的 port 号码来给 FTP 这个服务或者是 WWW 这个服务来处理。· 每一个 TCP 连接都必须由一端(通常为 client )发起请求,这个 port 通常是随机选择大于 1024 以上(因为0-1023一般被用作知名服务器的端口,被预定,如FTP、HTTP、SMTP等)的 port 号来进行!其 TCP封包会将(且只将) SYN旗标设定起来!这是整个联机的第一个封包;· 如果另一端(通常为 Server ) 接受这个请求的话(特殊的服务需要以特殊的 port 来进行,例如 FTP 的 port 21 ),则会向请求端送回整个联机的第二个封包!其上除了 SYN旗标之外同时还将 ACK 旗标也设定起来,并同时在本机端建立资源以待联机之需;· 然后,请求端获得服务端第一个响应封包之后,必须再响应对方一个确认封包,此时封包只带 ACK旗标(事实上,后继联机中的所有封包都必须带有 ACK 旗标);· 只有当服务端收到请求端的确认( ACK )封包(也就是整个联机的第三个封包)之后,两端的联机才能正式建立。这就是所谓的 TCP 联机的'三次握手( Three-Way Handshake )'的原理。经过三向交握之后,你的 client 端的 port 通常是高于 1024 的随机取得的 port,至于主机端则视当时的服务是开启哪一个 port 而定,例如 WWW 选择 80 而 FTP 则以 21 为正常的联机信道!总而言之,我们这里所说的端口,不是计算机硬件的I/O端口,而是软件形式上的概念。根据提供服务类型的不同,端口分为两种,一种是TCP端口,一种是UDP端口。计算机之间相互通信的时候,分为两种方式:一种是发送信息以后,可以确认信息是否到达,也就是有应答的方式,这种方式大多采用TCP协议;一种是发送以后就不管了,不去确认信息是否到达,这种方式大多采用UDP协议。对应这两种协议的服务提供的端口,也就分为TCP端口和UDP端口。那么,如果攻击者使用软件扫描目标计算机,得到目标计算机打开的端口,也就了解了目标计算机提供了哪些服务。我们都知道,提供服务就一定有服务软件的漏洞,根据这些,攻击者可以达到对目标计算机的初步了解。如果计算机的端口打开太多,而管理者不知道,那么,有两种情况:一种是提供了服务而管理者没有注意,比如安装IIS的时候,软件就会自动增加很多服务,而管理员可能没有注意到;一种是服务器被攻击者安装木马,通过特殊的端口进行通信。这两种情况都是很危险的,说到底,就是管理员不了解服务器提供的服务,减小了系统安全系数。

UDP "TCP/IP详解" 第十章 读书笔记
头部8字节, 四个字段各2Byte长度2Byte-> 在这里虽然依旧能够到达65535Byte, 但是是冗余的, 在IP数据报中已经记录大小.校验和2Byte-> 在IPv4中做12字节伪头部 or 在IPv6中做40字节伪头部进行校验.穿过NAT后, 伪头部会被修改.值得注意的是:可以容忍部分的内容错误下一头部字段 136头部中的校验和字段变成了校验范围, 能够选择校验0~65535中的前多少. 但是这个值在1~7之间是非法的, 因为头部要求必须被校验MTU常见的是1500Byte,留给UDP内容是1472Byte.如果超过这个大小, UDP就会被分片. 不同的分片段有同一个IP数据报序号.前面的片MF被设置"还有更多". 每一个分片带有偏移字段, *8后代表最终携带的字节.在非第一个分片的IP数据报中, 没有说明"下一个头部"的号码.拥有更大的偏移量的片会被优先投递, 让接收方提前知道这个UDP数据报到底有多大, 可以提前分配内存只对前两个分片报告ICMP超时, 后续的不再报告.甚至有可能根本不报告, 因为收到的前两个数据报中没有携带端口信息, 导致ICMP数据报缺少内容收到第一个分片就开始计时, 收到后续分片不重置计时器, 一般是30s超时发送的第一个UDP数据报可能默认是DF(不要分片)的, 这样如果IP数据报大小大于MTU时会被直接丢弃, 并返回一个ICMP消息. 如果在网络层报告的MTU信息之后, 这个程式还在运行, 那么就会利用这个MTU发现, 来更改DF信息, 允许分片. MTU信息也会有超时, 如果超时了, 那么又会恢复到之前的默认状态.历史问题:对于无状态的地址转化, 原来被分片后带有零校验和的IPv4-UDP不能转换, 因为变成IPv6之后没法计算(IPv6没有首部校验)虽然字段上能设置成65535 - 8 = 65527Byte, 但是应用程序不一定能接受这么大, 或者系统不接受这么大系统会API截断, 丢弃这个数据报中超出的部分 or 超出的部分留到下一次读取中 or 通知上层有多少被丢弃了. (取决于系统实现). 这被称为消息边界. TCP没有消息边界, 以"流"的形式传输.要注意IPv6和IPv4的地址长度不同, 使用不同的数据结构.IPv6的程序端口可能会同时占用Ipv4的端口如果想让重用同样的端口给不同的地址, 需要显式的通知系统.(e.g. 监听两个网卡的80端口).每一个端点都会收到一个拷贝. (端点的概念同时包含了防止多线程的进程多次读取)虽然只有<0.1%的流量是分片的, 但是70%左右的分片都是UDP的分片出现的可能因素:

IP TCP UDP的关系
看看附图就明白了。tcp和udp是在传输层,传输层的数据要将本层数据向下交给网络层才能和远程主机通信。他下面的网络层使用IP协议来完成数据的封装处理。
比喻呀 IP就象胃,TCP就像小肠,UDP就像大肠网络信息先经过胃(IP),分类后,一部分进入小肠TCP,一部分进入大肠UDP展开来说网络接口就像咽喉,应用层就像人体的出口信息就像食物,从入口(口腔)到出口 好像有点恶心的比喻
建议您学习一些基础的知识再看这本书,如果能具备一点点C语言的基础就更加好了。

TYCP/IP协议详解
TCP/IP协议 (传输控制协议/网间协议) TCP/IP 协议集确立了 Internet 的技术基础。TCP/IP 的发展始于美国 DOD (国防部)方案。 IAB (Internet 架构委员会)的下属工作组 IETF (Internet 工程任务组)研发了其中多数协议。 IAB 最初由美国政府发起,如今转变为公开而自治的机构。IAB 协同研究和开发 TCP/IP 协议集的底层结构,并引导着 Internet 的发展。TCP/IP 协议集记录在请求注解(RFC)文件中,RFC 文件均由 IETF 委员会起草、讨论、传阅及核准。所有这些文件都是公开且免费的,且能在 IETF 网站上列出的参考文献中找到。TCP/IP 协议覆盖了 OSI 网络结构七层模型中的六层,并支持从交换(第二层)诸如多协议标记交换,到应用程序诸如邮件服务方面的功能。TCP/IP 的核心功能是寻址和路由选择(网络层的 IP/IPV6 )以及传输控制(传输层的 TCP、UDP)。IP (网际协议)在网络通信中,网络组件的寻址对信息的路由选择和传输来说是相当关键的。相同网络中的两台机器间的消息传输有各自的技术协定。LAN 是通过提供6字节的唯一标识符(“MAC”地址)在机器间发送消息的。SNA 网络中的每台机器都有一个逻辑单元及与其相应的网络地址。DECNET、AppleTalk 和 Novell IPX 均有一个用来分配编号到各个本地网和工作站的配置。除了本地或特定提供商的网络地址,IP 为世界范围内的各个网络设备都分配了一个唯一编号,即 IP 地址。IPV4 的 IP 地址为4字节,按照惯例,将每个字节转化成十进制(0-255)并以点分隔各字节。IPV6 的 IP 地址已经增加到16字节。关于 IP 和 IPV6 协议的详细说明,在相关文件中再另作介绍。TCP (传输控制协议)通过序列化应答和必要时重发数据包,TCP 为应用程序提供了可靠的传输流和虚拟连接服务。TCP 主要提供数据流转送,可靠传输,有效流控制,全双工操作和多路传输技术。可查阅 TCP 部分获取更多详细资料。在下面的 TCP/IP 协议表格中,我们根据协议功能和其在 OSI 七层网络通信参考模型的映射关系将其全部列出。然而,TCP/IP 并不完全遵循 OSI 模型,例如:大多数 TCP/IP 应用程序是直接在传输层协议 TCP 和 UDP 上运行,而不涉及其中的表示层和会话层。 主要协议表

本文由 在线网速测试 整理编辑,转载请注明出处。