Skip to main content

Home/ Coders/ Group items matching "Networking" in title, tags, annotations or url

Group items matching
in title, tags, annotations or url

Sort By: Relevance | Date Filter: All | Bookmarks | Topics Simple Middle
18More

TCP 的那些事儿(上) 酷壳 - CoolShell.cn | 酷 壳 - CoolShell.cn - 0 views

shared by ma_haijin on 11 Aug 16 - No Cached
  • TCP的包是没有IP地址的,那是IP层上的事。但是有源端口和目标端口。
  • Sequence Number是包的序号,用来解决网络包乱序(reordering)问题。
  • Acknowledgement Number就是ACK——用于确认收到,用来解决不丢包的问题。
  • ...14 more annotations...
  • Window又叫Advertised-Window,也就是著名的滑动窗口(Sliding Window),用于解决流控的。
  • TCP Flag ,也就是包的类型,主要是用于操控TCP的状态机的。
  • 其实,网络上的传输是没有连接的,包括TCP也是一样的。而TCP所谓的“连接”,其实只不过是在通讯的双方维护一个“连接状态”,让它看上去好像有连接一样。所以,TCP的状态变换是非常重要的。
  • 这个号要作为以后的数据通信的序号,以保证应用层接收到的数据不会因为网络上的传输的问题而乱序(TCP会用这个序号来拼接数据)。
  • 关于建连接时SYN超时。试想一下,如果server端接到了clien发的SYN后回了SYN-ACK后client掉线了,server端没有收到client回来的ACK,那么,这个连接处于一个中间状态,即没成功,也没失败。于是,server端如果在一定时间内没有收到的TCP会重发SYN-ACK。在Linux下,默认重试次数为5次,重试的间隔时间从1s开始每次都翻售,5次的重试时间间隔为1s, 2s, 4s, 8s, 16s,总共31s,第5次发出后还要等32s都知道第5次也超时了,所以,总共需要 1s + 2s + 4s+ 8s+ 16s + 32s = 2^6 -1 = 63s,TCP才会把断开这个连接。
  • 请注意,请先千万别用tcp_syncookies来处理正常的大负载的连接的情况。因为,synccookies是妥协版的TCP协议,并不严谨。对于正常的请求,你应该调整三个TCP参数可供你选择,第一个是:tcp_synack_retries 可以用他来减少重试次数;第二个是:tcp_max_syn_backlog,可以增大SYN连接数;第三个是:tcp_abort_on_overflow 处理不过来干脆就直接拒绝连接了。
  • 一个ISN的周期大约是4.55个小时。因为,我们假设我们的TCP Segment在网络上的存活时间不会超过Maximum Segment Lifetime(缩写为MSL – Wikipedia语条),所以,只要MSL的值小于4.55小时,那么,我们就不会重用到ISN。
  • 为什么不直接给转成CLOSED状态呢?主要有两个原因:1)TIME_WAIT确保有足够的时间让对端收到了ACK,如果被动关闭的那方没有收到Ack,就会触发被动端重发Fin,一来一去正好2个MSL,2)有足够的时间让这个连接不会跟后面的连接混在一起(你要知道,有些自做主张的路由器会缓存IP数据包,如果连接被重用了,那么这些延迟收到的包就有可能会跟新连接混在一起)。
  • Again,使用tcp_tw_reuse和tcp_tw_recycle来解决TIME_WAIT的问题是非常非常危险的,因为这两个参数违反了TCP协议
  • 如果你的服务器是于HTTP服务器,那么设置一个HTTP的KeepAlive有多重要(浏览器会重用一个TCP连接来处理多个HTTP请求)
  • TCP要保证所有的数据包都可以到达,所以,必需要有重传机制。
  • 接收端给发送端的Ack确认只会确认最后一个连续的包,比如,发送端发了1,2,3,4,5一共五份数据,接收端收到了1,2,于是回ack 3,然后收到了4(注意此时3没收到),此时的TCP会怎么办?我们要知道,因为正如前面所说的,SeqNum和Ack是以字节数为单位,所以ack的时候,不能跳着确认,只能确认最大的连续收到的包,不然,发送端就以为之前的都收到了。
  • TCP引入了一种叫Fast Retransmit 的算法,不以时间驱动,而以数据驱动重传。也就是说,如果,包没有连续到达,就ack最后那个可能被丢了的包,如果发送方连续收到3次相同的ack,就重传。Fast Retransmit的好处是不用等timeout了再重传。
  • 注意:SACK会消费发送方的资源,试想,如果一个攻击者给数据发送方发一堆SACK的选项,这会导致发送方开始要重传甚至遍历已经发出的数据,这会消耗很多发送端的资源。
  •  
    TCP是一个巨复杂的协议,因为他要解决很多问题,而这些问题又带出了很多子问题和阴暗面。所以学习TCP本身是个比较痛苦的过程,但对于学习的过程却能让人有很多收获。关于TCP这个协议的细节,我还是推荐你去看W.Richard Stevens的《TCP/IP 详解 卷1:协议》(当然,你也可以去读一下RFC793以及后面N多的RFC)。另外,本文我会使用英文术语,这样方便你通过这些英文关键词来查找相关的技术文档。 之所以想写这篇文章,目的有三个, 一个是想锻炼一下自己是否可以用简单的篇幅把这么复杂的TCP协议描清楚的能力。 另一个是觉得现在的好多程序员基本上不会认认真真地读本书,喜欢快餐文化,所以,希望这篇快餐文章可以让你对TCP这个古典技术有所了解,并能体会到软件设计中的种种难处。并且你可以从中有一些软件设计上的收获。 最重要的希望这些基础知识可以让你搞清很多以前一些似是而非的东西,并且你能意识到基础的重要。 所以,本文不会面面俱到,只是对TCP协议、算法和原理的科普。 我本来只想写一个篇幅的文章的,但是TCP真TMD的复杂,比C++复杂多了,这30多年来,各种优化变种争论和修改。所以,写着写着就发现只有砍成两篇。 上篇中,主要向你介绍TCP协议的定义和丢包时的重传机制。 下篇中,重点介绍TCP的流迭、拥塞处理。 废话少说,首先,我们需要知道TCP在网络OSI的七层模型中的第四层--Transport层,IP在第三层--Network层,ARP在第二层--Data Link层,在第二层上的数据,我们叫Frame,在第三层上的数据叫Packet,第四层的数据叫Segment。 首先,我们需要知道,我们程序的数据首先会打到TCP的Segment中,然后TCP的Segment会打到IP的Packet中,然后再打到以太网Ethernet的Frame中
4More

Editor & Publisher ® - 3 views

  • So far, bostonglobe.com has published only one responsive ad. “Ad servers aren’t really ready for it yet, and advertisers aren’t quite (ready either),” Moriarty said.
    • Duane Jennings
       
      This is the huge revenue advantage that having a separate mobile page has over a single adaptive page. Having a separate mobile page does not mean the content has to be maintained in two different places though. Your CMS should handle the content in one place and still be able to display the content differently based on the device. Adaptive layout on one page just puts the burden on the phone and client PC to adjust the display rather than the CMS doing it before sending to the client. Many are doing adaptive layout wrong by sending all assets and content to phone devices which is not only bad for performance but also for user experience as it makes the page render slower.
  • accessible.
  • Jehl added that using responsive design forces news organizations to build uncluttered, lightweight websites. “That’s not really generally true of most of the desktop websites on the Web right now. They tend to be quite heavy and slow, and ad networks are generally built to be run on the desktop with faster browsers. There are lots of technical considerations around that, trying to figure out how best to use the same resources in dramatically different environments,” Jehl said.

Moody . Casquette Porsche - 0 views

started by subsequent1 subsequent1 on 17 Jan 14 no follow-up yet
1More

Executive Placement Firm in Noida, India - 0 views

  •  
    Even the best organizational strategy can fail with a wrong person in the right job,Acreaty has been in the domain of executive placements for over a decade and can today boast of a highly skilled network of professionals across the country. We also carry out manpower hiring in the following practice areas : Head-hunting Middle & senior management positions Bulk hiring Field sourcing
1More

Judi Online - 0 views

  •  
    Share audio content online and completely free of charge with audioBoom. Post it here and to other social networks. Sign up now or download the free app.
2More

Performance & Security for Any Website | CloudFlare (Private Beta) | Overview - 1 views

  • CloudFlare protects and accelerates any website online. Once your website is a part of the CloudFlare community, its web traffic is routed through our intelligent global network. We automatically optimize the delivery of your web pages so your visitors get the fastest page load times and best performance. We also block threats and limit abusive bots and crawlers from wasting your bandwidth and server resources. The result: CloudFlare-powered websites see a significant improvement in performance and a decrease in spam and other attacks.
  •  
    CloudFlare claims they can keep spambots off your website, and even stop SQL injection and XSS attacks before they hit your servers ... and they're willing to do part of that for FREE
2More

Application Recovery with C# (in Windows Vista) - 0 views

  •  
    A nice overview of how to use Vista's Application Recovery from C# to help your program recover from crashes or shutdown for upgrading (shared) files.
  •  
    Like this http://www.hdfilmsaati.net Film,dvd,download,free download,product... ppc,adword,adsense,amazon,clickbank,osell,bookmark,dofollow,edu,gov,ads,linkwell,traffic,scor,serp,goggle,bing,yahoo.ads,ads network,ads goggle,bing,quality links,link best,ptr,cpa,bpa
3More

Microsoft Protocol Technology Licensing Programs - 0 views

  •  
    Most Microsoft networking and media protocols are available for licensing ... if you have the cash.
  •  
    Hallo guys. I am very happy to share here. This is my site. If you would like to visit here. Go ahead. I've made ​​About a $ 58,000 from my little site. There is a forum and I was very happy to announce to you. I also provide seo service. www.killdo.de.gg
  •  
    Hallo guys. I am very happy to share here. This is my site. If you would like to visit here. Go ahead. I've made ​​About a $ 58,000 from my little site. There is a forum and I was very happy to announce to you. I also provide seo service. www.killdo.de.gg
2More

Tagline Generator - Timeline-based Tag Clouds - 0 views

  •  
    This tag cloud app not only generates the "tags" on it's own from document content, but it uses color to indicate the "age" ...
  •  
    Like this http://www.hdfilmsaati.net Film,dvd,download,free download,product... ppc,adword,adsense,amazon,clickbank,osell,bookmark,dofollow,edu,gov,ads,linkwell,traffic,scor,serp,goggle,bing,yahoo.ads,ads network,ads goggle,bing,quality links,link best,ptr,cpa,bpa
1More

CodeKindness :: Mobilizing Technology Professionals for Social Good - 0 views

  •  
    CodeKindness is a project that mobilizes volunteer technologists for social good.
1More

WebDrive FTP/WebDAV Client - 1 views

  •  
    Connect to WebDAV, FTP, Amazon S3, FTPS, or SFTP servers through a virtual drive which is a full file-system drive which works in DOS, PowerShell, etc.
1More

SmartIrc4net -- C# IRC library -- SourceForge.net - 0 views

  •  
    A C# IRC library that's ideal for writing bots (or IRC Clients, I guess).
1More

QuickGraph, Graph Data Structures And Algorithms for .Net - Home - 0 views

  • QuickGraph 2.0 provides generic directed graph datastructures and algorithms for .Net 2.0. QuickGraph comes with algorithms such as depth first seach, breath first search, shortest path, network flow etc... QuickGraph supports GLEE and Graphviz to render the graphs.
2More

XtUnit Unit Testing Extensibility Framework - 0 views

  •  
    XtUnit.Framework is an extensibility framework for nUnit and MbUnit to allow you to create new test-case types and attributes. 

    It includes the well known [Rollback] attribute (built in on MbUnit, but not nUnit) which allows automatic rollback of changes to your database which occur during the execution of a test.
  •  
    Like this http://www.hdfilmsaati.net Film,dvd,download,free download,product... ppc,adword,adsense,amazon,clickbank,osell,bookmark,dofollow,edu,gov,ads,linkwell,traffic,scor,serp,goggle,bing,yahoo.ads,ads network,ads goggle,bing,quality links,link best,ptr,cpa,bpa
2More

XPathmania - Visual Studio 2005 XPath AddIn - 0 views

  •  
    XPathmania is a visual studio extension to allow executing XPath queries on XML documents ... now you can test your XPath queries without loading up an external app

  •  
    Like this http://www.hdfilmsaati.net Film,dvd,download,free download,product... ppc,adword,adsense,amazon,clickbank,osell,bookmark,dofollow,edu,gov,ads,linkwell,traffic,scor,serp,goggle,bing,yahoo.ads,ads network,ads goggle,bing,quality links,link best,ptr,cpa,bpa
6More

Joe Duffy's Weblog - OnBeingStateful - 0 views

  • The biggest question left unanswered in my mind is the role state will play in software of the future.
  • The biggest question left unanswered in my mind is the role state will play in software of the future. That seems like an absurd statement, or a naïve one at the very least.  State is everywhere: The values held in memory. Data locally on disk. Data in-flight that is being sent over a network. Data stored in the cloud, including on a database, remote filesystem, etc. Certainly all of these kinds of state will continue to exist far into the future.  Data is king, and is one major factor that will drive the shift to parallel computing.  The question then is how will concurrent programs interact with this state, read and mutate it, and what isolation and synchronization mechanisms are necessary to do so?
  • Many programs have ample gratuitous dependencies, simply because of the habits we’ve grown accustomed to over 30 odd years of imperative programming.  Our education, mental models, books, best-of-breed algorithms, libraries, and languages all push us in this direction.  We like to scribble intermediary state into shared variables because it’s simple to do so and because it maps to our von Neumann model of how the computer works.
  • ...3 more annotations...
  • We need to get rid of these gratuitous dependencies.  Merely papering over them with a transaction—making them “safe”—doesn’t do anything to improve the natural parallelism that a program contains.  It just ensures it doesn’t crash.  Sure, that’s plenty important, but providing programming models and patterns to eliminate the gratuitous dependencies also achieves the goal of not crashing but with the added benefit of actually improving scalability too.  Transactions have worked so well in enabling automatic parallelism in databases because the basic model itself (without transactions) already implies natural isolation among queries.  Transactions break down and scalability suffers for programs that aren’t architected in this way.  We should learn from the experience of the database community in this regard
  • There will always be hidden mutation of shared state inside lower level system components.  These are often called “benevolent side-effects,” thanks to Hoare, and apply to things like lazy initialization and memorization caches.  These will be done by concurrency ninjas who understand locks.  And their effects will be isolated by convention.
  • Even with all of this support, we’d be left with an ecosystem of libraries like the .NET Framework itself which have been built atop a fundamentally mutable and imperative system.  The path forward here is less clear to me, although having the ability to retain a mutable model within pockets of guaranteed isolation certainly makes me think the libraries are salvageable.  Thankfully, the shift will likely be very gradual, and the pieces that pose substantial problems can be rewritten in place incrementally over time.  But we need the fundamental language and type system support first.
2More

Microsoft Axum - Download Details - 0 views

  • Installer: Axum is an incubation project from Microsoft’s Parallel Computing Platform that aims to validate a safe and productive parallel programming model for the .NET framework. It’s a language that builds upon the architecture of the web and the principles of isolation, actors, and message-passing to increase application safety, responsiveness, scalability and developer productivity. Other advanced concepts we are exploring are data flow networks, asynchronous methods, and type annotations for taming side-effects. Programmer's Guide: Use this simple and easy to follow programmer's guide to learn how to create safe, scalable, and responsive applications with the Axum language. Language Specification: A detailed specification of the Axum language.
  •  
    A .NET language for safe, scalable and productive parallel programming through isolation, actors and message-passing ...
« First ‹ Previous 61 - 80 of 108 Next › Last »
Showing 20 items per page