tcp/ip怎么解析go tcp发送数据包过来的数据包

&&&&TCP_IP 数据包分析程序篇
&TCP_IP 数据包分析程序篇
TCP_IP 数据包分析程序,有源码解析,能够清楚的了解TCP/IP发包流程
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
VIP下载&&免积分60元/年(1200次)
您可能还需要
Q.为什么我点的下载下不了,但积分却被扣了
A. 由于下载人数众多,下载服务器做了并发的限制。若发现下载不了,请稍后再试,多次下载是不会重复扣分的。
Q.我的积分不多了,如何获取积分?
A. 获得积分,详细见。
完成任务获取积分。
论坛可用分兑换下载积分。
第一次绑定手机,将获得5个C币,C币可。
关注并绑定CSDNID,送10个下载分
下载资源意味着您已经同意遵守以下协议
资源的所有权益归上传用户所有
未经权益所有人同意,不得将资源中的内容挪作商业或盈利用途
CSDN下载频道仅提供交流平台,并不能对任何下载资源负责
下载资源中如有侵权或不适当内容,
本站不保证本站提供的资源的准确性,安全性和完整性,同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
开发技术下载排行
您当前C币:0&&&可兑换 0 下载积分
兑换下载分:&
消耗C币:0&
立即兑换&&
兑换成功你当前的下载分为 。前去下载资源
你下载资源过于频繁,请输入验证码
如何快速获得积分?
你已经下载过该资源,再次下载不需要扣除积分
TCP_IP 数据包分析程序篇
所需积分:1
剩余积分:0
扫描微信二维码精彩活动、课程更新抢先知
VIP会员,免积分下载
会员到期时间:日
剩余下载次数:1000
TCP_IP 数据包分析程序篇
剩余次数:&&&&有效期截止到:
你还不是VIP会员VIP会员享免积分 . 专属通道极速下载
VIP下载次数已满VIP会员享免积分 . 专属通道极速下载,请继续开通VIP会员
你的VIP会员已过期VIP会员享免积分 . 专属通道极速下载,请继续开通VIP会员温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
强者恒强,弱者恒弱!
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(2508)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
在LOFTER的更多文章
loftPermalink:'',
id:'fks_',
blogTitle:'tcpdump抓取TCP/IP数据包分析',
blogAbstract:'
一、 tcpdump使用1、首先看下MAN手册TCPDUMP(8)NAMEtcpdump - dump traffic on a networkSYNOPSIStcpdump [ -AdDeflLnNOpqRStuUvxX ] [ -c count ][ -C file_size ] [ -F file ][ -i interface ] [ -m module ] [ -M secret ][ -r file ] [ -s snaplen ] [ -T type ] [ -w file ][ -W filecount ][ -E spi@ipaddr algo:secret,... ][ -y datalinktype ] [ -Z user ]',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:0,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'强者恒强,弱者恒弱!',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}TCP/IP数据包解析示例
IP和谈(Internet Protocol)是收集层和谈,用在因特网上,TCP,UDP,ICMP,IGMP数据都是遵守IP数据格局发送得。IP和谈供给的是不成靠无连接得办事。IP数据包由一个头部和一个正文项目组构成。正文主如果传输的数据,IP头部由20字节的固定长度和一个可选随便率性长度项目组构成,以大段点机次序传送,从左到右,IP和谈数据包格局如下
TCP和谈(TRANSMISSION CONTROL PROTOCOL)是传输层和谈,为应用层供给办事,和UDP不合的是,TCP和谈供给的靠得住的面向连接的办事,跟IP头部差不久不多,根蒂根基的长度也是20字节。TCP数据包是包含在一个IP数据报文中的,TCP数据包如下
这是一次FTP的连接,,是cuteftp默认的cuteftp的FTP站点,IP地址是:216.3.226.21。我的IP地址假设为: 192.168.1.1。下面的数据就是TCP/IP连接过程中的数据传输。我们可以解析TCP/IP和谈数据格局以及TCP/IP连接的三次握手景象。下面的这些十六进制数据只是TCP/IP和谈的数据,不是完全的收集通信数据。 
  第一次,我向FTP站点发送连接恳求(TCP数据的可选项目组去掉了) 
  192.168.1.1-&216.3.226.21 
  IP头部: 45 00 00 30 52 52 40 00 80 06 2c 23 c0 a8 01 01 d8 03 e2 15 
  TCP头部:0d 28 00 15 50 5f a9 06 00 00 00 00 70 02 40 00 c0 29 00 00 
  第一字节,&45&,此中&4&是IP和谈的版本(Version),申明是IP4。&5&是IHL位,默示IP头部的长度,是一个4bit字段,最大就是1111了,值为15,IP头部的最大长度就是60字节。而这里为&5&,申明是20字节,这是标准的IP头部长度,头部报文中没有发送可选项目组数据。 
  接下来的一个字节&00&是办事类型(Type of Service)。这个8bit字段由3bit的优先权子字段(如今已经被忽视),4 bit的TOS子字段以及1 bit的未用字段(如今为0)构成.4 bit的TOS子字段包含:最小延时、最大吞吐量、最高靠得住性以及最小费用构成,这四个1bit位最多只能有一个为1,本例中都为0,默示是一般办事。 
  接着的两个字节&00 30&是IP数据报文总长,包含头部以及数据,这里默示48字节。这48字节由20字节的IP头部以及28字节的TCP头构成(底本截取的TCP头应当是28字节的,此中8字节为可选项目组,被我省去了)。是以今朝最大的IP数据包长度是65535字节。 
  再是两个字节的标记位(Identification):&5252&,转换为十进制就是21074。这个是让目标主机来断定新来的分段属于哪个分组。 
  下一个字节&40&,转换为二进制就是&&,此中第一位是IP和谈今朝没有效上的,为0。接着的是两个标记DF和MF。DF为1默示不要分段,MF为1默示还有进一步的分段(本例为0)。然后的&0 0000&是分段便移(Fragment Offset)。 
  &80&这个字节就是TTL(Time To Live)了,默示一个IP数据流的生命周期,用Ping显示的成果,能获得TTL的值,很多文章就说经由过程TTL位来判别主机类型。因为一般主机都有默认的TTL值,不合体系的默认值不一样。比如WINDOWS为128。不过,一般Ping获得的都不是默认值,这是因为每次IP数据包经过一个路由器的时辰TTL就减一,当减到0时,这个数据包就灭亡了。这也时Tracert的道理。本例中为&80&,转换为十进制就是128了,我用的WIN2000。 
  持续下来的是&06&,这个字节默示传输层的和谈类型(Protocol)。在RFC790中有定义,6默示传输层是TCP和谈。 
  &2c 23&这个16bit是头校验和(Header Checksum)。 
  接下来&c0 a8 01 01&,这个就是源地址(Source Address)了,也就是我的IP地址。
  转换为十进制的IP地址就是:192.168.1.1,同样,持续下来的32位&d8 03 e2 15&是目标地址,216.3.226.21 
  好了,这就是20字节的IP数据报头了。持续看TCP的头部吧,这个是作为IP数据包的数据项目组传输的。 
  TCP头部:0d 28 00 15 50 5f a9 06 00 00 00 00 70 02 40 00 c0 29 00 00 
  一来就是一个两字节段&0d 28&,默示本地端标语,转换为十进制就是3368。第二个两字节段&00 15&默示目标端口,因为我是连接FTP站点,所以,这个就是21啦,十六进制当然就是&00 15&。 
  接下来的四个字节&50 5f a9 06&是次序号(Sequence Number),简写为SEQ,SEQ=下面的四个字节&00 00 00 00&是确认号(Acknowledgment Number),简写为ACKNUM。 
  持续两个字节,&70 02&,转换为二进制吧,&00 0010&。这两个字节,统共16bit,有很多多少器材呢。第一个4bit&0111&,是TCP头长,十进制为7,默示28个字节(刚才说了,省略了8字节的option数据,所以你只看见了20字节)。接着的6bit如今TCP和谈没有效上,都为0。最后的6bit&00 0010&是六个首要的标记。这是两个策画机数据交换的信息标记。接管和发送断按照这些标记来断定信息流的种类。下面是一些介绍: 
  URG:(Urgent Pointer field significant)紧急指针。用到的时辰值为1,用来处理惩罚避免TCP数据流中断 
  ACK:(Acknowledgment fieldsignificant)置1时默示确认号(AcknowledgmentNumber)为合法,为0的时辰默示数据段不包含确认信息,确认号被忽视。 
  PSH:(Push Function),PUSH标记的数据,置1时恳求的数据段在接管方获得后就可直接送到应用法度,而不必比及缓冲区满时才传送。 
  RST:(Reset the connection)用于复位因某种原因引起呈现的错误连接,也用来谢毫不法数据和恳求。若是接管到RST位时辰,凡是产生了某些错误。 
  SYN:(Synchronize sequence numbers)用来建树连接,在连接恳求中,SYN=1,ACK=0,连接响应时,SYN=1,ACK=1。即,SYN和ACK来区分Connection Request和Connection Accepted。 
  FIN:(No more data sender)用来开释连接,注解发送方已经没稀有据发送了。 
  这6个标记位,对号入座。本例中SYN=1,ACK=0,当然就是默示连接恳求了。我们可以重视下面两个过程的这两位的变换。 
  后面的&40 00 c0 29 00 00&不讲了。后面两次通信的数据,分隔看吧。我们看看连接的过程,一些首要处所的变更。 
  第二次,FTP站点返回一个可以连接的旌旗灯号。 
  216.3.226.21-&192.168.1.1 
  IP头部: 45 00 00 2c c6 be 40 00 6a 06 cd ba d8 03 e2 15 c0 a8 01 01 
  TCP头部:00 15 0d 28 4b 4f 45 c1 50 5f a9 07 60 12 20 58 64 07 00 00 
  第三次,我确认连接。TCP连接建树起来。 
  192.168.1.1-&216.3.226.21 
  IP头部: 45 00 00 28 52 53 40 00 80 06 2c 2a c0 a8 01 01 d8 03 e2 15 
  TCP头部:0d 28 00 15 50 5f a9 07 4b 4f 45 c2 50 10 40 b0 5b 1c 00 00 
  看看全部Threeway_handshake过程。 
  第一步,我发出连接恳求,TCP数据为:SEQ=50 5f a9 06,ACKNUM=00 00 00 00,SYN=1,ACK=0。 
  第二步,对方确承认以连接,TCP数据为:SEQ=4b 4f 45 c1,ACKNUM=50 5f a9 07,SYN=1,ACK=1。 
  第三步,我确认建树连接。SEQ=50 5f a9 07, ACKNUM=4b 4f45c2,SYN=0,ACK=1。 
  正式建树连接了呢,这些器材是什么值? 
  我接管从216.3.226.21-&192.168.1.1的下一个数据包中: 
  SEQ=4b 4f 45 c2,ACKNUM=50 5f a9 07,SYN=0,ACK=1这些就是TCP三次握手所传输的数据了
> 本站内容系网友提交或本网编辑转载,其目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请及时与本网联系,我们将在第一时间删除内容!
上周发一篇文章:http://blog.csdn.net/prsniper/article/details/6762145 大家反应比较活跃,看来对大家帮助不少,于是有此文.
================================================================ 先声明一下,文章被很多人转载,我欢迎大家转载,但是 ...
[关键词] TCP IP 数据包 结构 具体解释 网络 协议 一般来说,网络编程我们仅仅须要调用一些封装好的函数或者组件就能完毕大部分的工作,可是一些特殊的情况下,就须要深入的理解 网络数据包的结构,以及协议分析.如:网络监控,故障排查等--
IP包是不安全的,可是它是互联网的基础,在各方面都有广泛的应用.由IP协议衍生的协议族有10数种(据我所知), ...
[关键词] TCP IP 数据包 结构 详解 网络 协议 一般来说,网络编程我们只需要调用一些封装好的函数或者组件就能完成大部分的工作,但是一些特殊的情况下,就需要深入的理解 网络数据包的结构,以及协议分析.如:网络监控,故障排查等--
IP包是不安全的,但是它是互联网的基础,在各方面都有广泛的应用.由IP协议衍生的协议族有10数种(据我所知),以后还 ...
完全依赖于你的觉悟,数据包监测既是一个重要的管理工具,也可以成为一项邪恶的黑客技 术.事实上,它两者皆是,一个好的数据包监测软件通常可以在网络管理和黑客技术工具包中同时找到. 黑客可以用数据包监测软件监听互联网,并且追踪一些敏感数据的交换如登录对话和财经交 易.网络管理员可以用数据包监测软件检测错误布线,损坏的数据包和其它网络问题. 在本文中,我们覆盖了开始 ...
原作者博客:http://blog.csdn.net/prsniper/article/details/6762145 [关键词] TCP IP 数据包 结构 详解 网络 协议 一般来说,网络编程我们只需要调用一些封装好的函数或者组件就能完成大部分的工作,但是一些特殊的情况下,就需要深入的理解 网络数据包的结构,以及协议分析.如:网络监控,故障排查等--
关于TCP/IP数据包的截取和分析(摘自安全焦点论坛,原作:ilsy)TCP/IP数据包的截取是一个简单的工作,在Windows 2000/xp下,下面方法可以完成TCP/IP数据包的截获:1.通过建立rawsocket来完成对TCP/IP数据包的截获.从Windows 2000开始,Winsock 2开始支持原始socket,可以 截获所有经过本机的TCP ...
TCP/IP协议中各层的数据报结构是一个比较抽象的内容,大家在日常学习过程中往往难以理解和掌握,常常是死记硬背把它记住了事.本文首先利用Sniffer工具捕获了FTP命令操作过程中的所有数据包,然后对Sniffer工具中捕获的每一部分数据包的含义进行了详细的阐述,最后总结归纳出TCP/IP协议中网络接口层.网络层.传输层的数据报文结构,从而使大家加深对TCP ...
IP 数据包格式 (1)版本 占4位,指IP协议的版本.通信双方使用的IP协议版本必须一致.目前广泛使用的IP协议版本号为4(即IPv4).关于IPv6,目前还处于草案阶段. (2)首部长度 占4位,可表示的最大十进制数值是15.请注意,这个字段所表示数的单位是32位字长(1个32位字长是4字节),因此,当IP的首部长度为1111时(即十进制的15),首部长 ...学习(51)
IP和谈(Internet Protocol)是收集层和谈,用在因特网上,TCP,UDP,ICMP,IGMP数据都是遵守IP数据格局发送得。IP和谈供给的是不成靠无连接得办事。IP数据包由一个头部和一个正文项目组构成。正文主如果传输的数据,IP头部由20字节的固定长度和一个可选随便率性长度项目组构成,以大段点机次序传送,从左到右,IP和谈数据包格局如下
TCP和谈(TRANSMISSION CONTROL PROTOCOL)是传输层和谈,为应用层供给办事,和UDP不合的是,TCP和谈供给的靠得住的面向连接的办事,跟IP头部差不久不多,根蒂根基的长度也是20字节。TCP数据包是包含在一个IP数据报文中的,TCP数据包如下
这是一次FTP的连接,呵呵,是cuteftp默认的cuteftp的FTP站点,IP地址是:216.3.226.21。我的IP地址假设为: 192.168.1.1。下面的数据就是TCP/IP连接过程中的数据传输。我们可以解析TCP/IP和谈数据格局以及TCP/IP连接的三次握手景象。下面的这些十六进制数据只是TCP/IP和谈的数据,不是完全的收集通信数据。 
  第一次,我向FTP站点发送连接恳求(TCP数据的可选项目组去掉了) 
  192.168.1.1-&216.3.226.21 
  IP头部: 45 00 00 30 52 52 40 00 80 06 2c 23 c0 a8 01 01 d8 03 e2 15 
  TCP头部:0d 28 00 15 50 5f a9 06 00 00 00 00 70 02 40 00 c0 29 00 00 
  第一字节,&45&,此中&4&是IP和谈的版本(Version),申明是IP4。&5&是IHL位,默示IP头部的长度,是一个4bit字段,最大就是1111了,值为15,IP头部的最大长度就是60字节。而这里为&5&,申明是20字节,这是标准的IP头部长度,头部报文中没有发送可选项目组数据。 
  接下来的一个字节&00&是办事类型(Type of Service)。这个8bit字段由3bit的优先权子字段(如今已经被忽视),4 bit的TOS子字段以及1 bit的未用字段(如今为0)构成.4 bit的TOS子字段包含:最小延时、最大吞吐量、最高靠得住性以及最小费用构成,这四个1bit位最多只能有一个为1,本例中都为0,默示是一般办事。 
  接着的两个字节&00 30&是IP数据报文总长,包含头部以及数据,这里默示48字节。这48字节由20字节的IP头部以及28字节的TCP头构成(底本截取的TCP头应当是28字节的,此中8字节为可选项目组,被我省去了)。是以今朝最大的IP数据包长度是65535字节。 
  再是两个字节的标记位(Identification):&5252&,转换为十进制就是21074。这个是让目标主机来断定新来的分段属于哪个分组。 
  下一个字节&40&,转换为二进制就是&&,此中第一位是IP和谈今朝没有效上的,为0。接着的是两个标记DF和MF。DF为1默示不要分段,MF为1默示还有进一步的分段(本例为0)。然后的&0 0000&是分段便移(Fragment Offset)。 
  &80&这个字节就是TTL(Time To Live)了,默示一个IP数据流的生命周期,用Ping显示的成果,能获得TTL的值,很多文章就说经由过程TTL位来判别主机类型。因为一般主机都有默认的TTL值,不合体系的默认值不一样。比如WINDOWS为128。不过,一般Ping获得的都不是默认值,这是因为每次IP数据包经过一个路由器的时辰TTL就减一,当减到0时,这个数据包就灭亡了。这也时Tracert的道理。本例中为&80&,转换为十进制就是128了,我用的WIN2000。 
  持续下来的是&06&,这个字节默示传输层的和谈类型(Protocol)。在RFC790中有定义,6默示传输层是TCP和谈。 
  &2c 23&这个16bit是头校验和(Header Checksum)。 
  接下来&c0 a8 01 01&,这个就是源地址(Source Address)了,也就是我的IP地址。
  转换为十进制的IP地址就是:192.168.1.1,同样,持续下来的32位&d8 03 e2 15&是目标地址,216.3.226.21 
  好了,这就是20字节的IP数据报头了。持续看TCP的头部吧,这个是作为IP数据包的数据项目组传输的。 
  TCP头部:0d 28 00 15 50 5f a9 06 00 00 00 00 70 02 40 00 c0 29 00 00 
  一来就是一个两字节段&0d 28&,默示本地端标语,转换为十进制就是3368。第二个两字节段&00 15&默示目标端口,因为我是连接FTP站点,所以,这个就是21啦,十六进制当然就是&00 15&。 
  接下来的四个字节&50 5f a9 06&是次序号(Sequence Number),简写为SEQ,SEQ=下面的四个字节&00 00 00 00&是确认号(Acknowledgment Number),简写为ACKNUM。 
  持续两个字节,&70 02&,转换为二进制吧,&00 0010&。这两个字节,统共16bit,有很多多少器材呢。第一个4bit&0111&,是TCP头长,十进制为7,默示28个字节(刚才说了,省略了8字节的option数据,所以你只看见了20字节)。接着的6bit如今TCP和谈没有效上,都为0。最后的6bit&00 0010&是六个首要的标记。这是两个策画机数据交换的信息标记。接管和发送断按照这些标记来断定信息流的种类。下面是一些介绍: 
  URG:(Urgent Pointer field significant)紧急指针。用到的时辰值为1,用来处理惩罚避免TCP数据流中断 
  ACK:(Acknowledgment fieldsignificant)置1时默示确认号(AcknowledgmentNumber)为合法,为0的时辰默示数据段不包含确认信息,确认号被忽视。 
  PSH:(Push Function),PUSH标记的数据,置1时恳求的数据段在接管方获得后就可直接送到应用法度,而不必比及缓冲区满时才传送。 
  RST:(Reset the connection)用于复位因某种原因引起呈现的错误连接,也用来谢毫不法数据和恳求。若是接管到RST位时辰,凡是产生了某些错误。 
  SYN:(Synchronize sequence numbers)用来建树连接,在连接恳求中,SYN=1,ACK=0,连接响应时,SYN=1,ACK=1。即,SYN和ACK来区分Connection Request和Connection Accepted。 
  FIN:(No more data sender)用来开释连接,注解发送方已经没稀有据发送了。 
  这6个标记位,对号入座。本例中SYN=1,ACK=0,当然就是默示连接恳求了。我们可以重视下面两个过程的这两位的变换。 
  后面的&40 00 c0 29 00 00&不讲了。后面两次通信的数据,分隔看吧。我们看看连接的过程,一些首要处所的变更。 
  第二次,FTP站点返回一个可以连接的旌旗灯号。 
  216.3.226.21-&192.168.1.1 
  IP头部: 45 00 00 2c c6 be 40 00 6a 06 cd ba d8 03 e2 15 c0 a8 01 01 
  TCP头部:00 15 0d 28 4b 4f 45 c1 50 5f a9 07 60 12 20 58 64 07 00 00 
  第三次,我确认连接。TCP连接建树起来。 
  192.168.1.1-&216.3.226.21 
  IP头部: 45 00 00 28 52 53 40 00 80 06 2c 2a c0 a8 01 01 d8 03 e2 15 
  TCP头部:0d 28 00 15 50 5f a9 07 4b 4f 45 c2 50 10 40 b0 5b 1c 00 00 
  看看全部Threeway_handshake过程。 
  第一步,我发出连接恳求,TCP数据为:SEQ=50 5f a9 06,ACKNUM=00 00 00 00,SYN=1,ACK=0。 
  第二步,对方确承认以连接,TCP数据为:SEQ=4b 4f 45 c1,ACKNUM=50 5f a9 07,SYN=1,ACK=1。 
  第三步,我确认建树连接。SEQ=50 5f a9 07, ACKNUM=4b 4f45c2,SYN=0,ACK=1。 
  正式建树连接了呢,这些器材是什么值? 
  我接管从216.3.226.21-&192.168.1.1的下一个数据包中: 
  SEQ=4b 4f 45 c2,ACKNUM=50 5f a9 07,SYN=0,ACK=1这些就是TCP三次握手所传输的数据了
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:154705次
积分:3147
积分:3147
排名:第8676名
原创:148篇
转载:87篇
评论:19条
(1)(1)(3)(1)(1)(2)(3)(1)(1)(1)(1)(3)(2)(3)(1)(3)(9)(22)(9)(2)(12)(7)(4)(3)(4)(16)(6)(2)(2)(4)(2)(2)(1)(5)(1)(2)(4)(1)(3)(11)(9)(12)(20)(4)(10)(13)(3)(1)2073人阅读
TCP/IP详解(56)
<span style="font-family:SimS font-size:14 color:#48字节是实际场景下,单个TCP包的实际运载能力。也就是说,实际场景下,上层调用send(1000KB),下层会把这1000KB封装成多个TCP包进行发送。单个TCP包每次打包1448字节的数据进行发送。
详细的TCP在传输情景wireshark截图如图1
每个TCP包在理论上应该能打包更多数据才对,但是实际场景下TCP传输为什么会以这个1448作为打包单位呢?
这个实际TCP单包传输1448字节数据的根源在于“以太网Ethernet最大的数据帧是<span style="font-family:SimS font-size:14 color:#18字节”。
1500字节的MTU
以太网Ethernet最大的数据帧是1518字节。以太网帧的帧头14字节和帧尾CRC校验4字节(共占18字节),剩下承载上层协议的地方也就是Data域最大就只剩1500字节.&这个&#20540;我们就把它称之为MTU。
我们来看看linux上MTU默认&#20540;,查证一下,cat /sys/class/net/eth0/mtu
这个MTU&#20540;可以修改,但是现在大部分计算机网络都被以太网承载,所以修改这个&#20540;没有什么实际意义。
MSS决定TCP的单包传输量
MSS就是TCP数据包每次能够传输的最大量。为了达到最佳的传输效能,TCP协议在建立连接的时候通常要协商双方的MSS&#20540;,这个&#20540;TCP协议在实现的
时候往往用MTU&#20540;代替(需要减去IP数据包包头的大小<span style="font-family:SimS color:#Bytes和TCP数据段的包头20Bytes)所以往往MSS为1460(如图1中红色方框所示的SYN包中的MSS&#20540;)。通讯双方会根据双方提供的MSS&#20540;得最小&#20540;确定为这次连接的最大MSS&#20540;。
MSS为1460是由1500-20(IP头)-20(TCP头)计算出的。
实际场景下,TCP包头中会带有12字节的选项----时间戳。
这样,单个TCP包实际传输的最大量就缩减为1448字节。1448=1500-20(IP头)-32(20字节TCP头和12字节TCP选项时间戳)
回到我们开篇的问题
“每个TCP包在理论上应该能打包更多数据才对,但是实际场景下TCP传输为什么会以这个1448作为打包单位呢?”
理论上,单个TCP包能打包的数据量远远多于1448字节,现在为了适应MTU,只要在以太网上跑TCP,系统就默认最大以1448字节打包TCP。
假如我们用更大的数据量来打包会有什么结果呢?
答案是降低了传输效率。
超过MTU的大包反而降低效率的原因如下:
IP层非常关心MTU,因为IP层会根据MTU来决定是否把上层传下来的数据进行分片。就像一条运输线路的承载能力是有限的,碰到大东西要运输,只能把大东西拆开成为散件,分开运输,到达目的地之后还必须能再次组装起来。
当两台远程PC互联的时候,它们的数据需要穿过很多的路由器和各种各样的网络媒介才能到达对端,网络中不同媒介的MTU各不相同,就好比一长段的水管,由不同粗细的水管组成(MTU不同&:))通过这段水管最大水量就要由中间最细的水管决定。
对于网络层的上层协议而言(我们以TCP/IP协议族为例)它们对水管粗细不在意它们认为这个是网络层的事情。网络层IP协议会检查每个从上层协议下来的数据包的大小,并根据本机MTU的大小决定是否作“分片”处理。分片最大的坏处就是降低了传输性能,本来一次可以搞定的事情,分成多次搞定,所以在网络层更高一层(就是传输层)的实现中往往会对此加以注意!
这个就是在以太网上,TCP不发大包,反而发送1448小包的原因。只要这个&#20540;TCP才能对链路进行效能最高的利用。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1501699次
积分:25148
积分:25148
排名:第199名
原创:859篇
转载:219篇
评论:278条
阅读:4891
文章:23篇
阅读:44290
文章:31篇
阅读:51719
文章:14篇
阅读:18371
(1)(7)(8)(6)(1)(2)(140)(49)(3)(33)(38)(48)(32)(53)(33)(10)(17)(11)(73)(67)(21)(36)(65)(64)(126)(66)(45)(17)

我要回帖

更多关于 python 发送tcp数据包 的文章

 

随机推荐