作家
登录

Web开发应该知道的计算机网络知识

作者: 来源: 2017-11-23 09:11:10 阅读 我要评论

  • 全双工通信
  • 面向字撙节
  • TCP的工作流程

    TCP字撙节

    TCP的连接

    TCP连接的端点叫套接字(socket)

    socket = (IP地址 : 端标语)

    每一条TCP连接独一地被通信两端的两个端点(socket)所肯定. 即 :

    TCP连接 ::= {socket1, socket2} = {(IP1 : port1), (IP2 : port2)}

    TCP报文段的首部

    应用层

    最大年夜报文段长度MSS(Maximum Segment Size) : 每一个TCP报文段中数据字段的最大年夜长度,若不填写则为默认的536字节。

    若确认号 = N, 则注解 : 到序号N-1为止的所稀有据都已正常收到

    • 数据偏移 : TCP报文段的首部长度
    • 保存 : 今后用, 今朝为0
    • 紧急URG : 若URG = 1时, 解释紧急指针字段有效, 告诉体系这是紧急数据, 应尽快传送. 例如忽然要中断传送
    • 确认ACK : ACK = 1时确认号才有效, ACK = 0时确认号无效. TCP规定, 连接建立后所有传送的报文段都必须把ACK置1
    • 推送PSH : 若PSH = 1, 则接收方收到报文段之后不再比及全部缓存满而是直接向上交付
    • 复位RST : 当RST = 1, 解释TCP连接有严重缺点, 必须释放连接再重连
    • 同步SYN : 在连接建立时用来同步序号. 当SYN = 1, ACK = 0时注解这是一个连接请求报文段, 对方若赞成建立连接, 则在响应的报文段中置SYN = 1, ACK = 1
    • 终止FIN : 当FIN = 1, 注解此报文段的发送方数据已发送完毕, 并请求释放连接
    • 窗口 : 告诉对方 : 大年夜本报文段首部中切实其实认号算起, 接收方今朝许可对方发送的数据量. 这是作为接收方让发送方设置其发送窗口的根据
    • 考验和 : 同UDP, 考验首部和数据部分
    • 紧急指针 : 当URG = 1时有效, 指出紧急数据的末尾在报文段的地位
    • 选项 : 最大年夜可40字节, 没有则为0

    窗口

    TCP中很重要的一个概念, 那就是窗口(发送窗口和接收窗口)

    窗口

    因为停止等待协定异常低效,于是衍生出窗口章一ㄅ念。上图为发送方保持的发送窗口, 位于发送窗口的5个分组都可以持续发送出去而不须要等待对方切实其实认。每收到一个确认, 就把发送窗口前移一个分组的地位。这大年夜大年夜进步了信道应用率!

    接收方不必发送每个分组切实其实认报文,而是采取累积确认的方法。也就是说, 对按序达到的最后一个分组发送确认报文。

    超时重传

    如不雅发送方等待一段时光后, 照样充公到 ACK 确认报文,就会启动超时重传。 这个等待的时光为重传超不时光(RTO, Retransmission TimeOut)。

    然而, RTO 的值不是固定的,这个时光老是略大年夜于连接往返时光(RTT,Round Trip Time)。假设备文发送以前须要5秒,对方收到后发送确认报文回来也须要5秒,那么RTT就为10秒, 那这RTO就要比10秒要略大年夜一些。那么跨越RTO之后还没有收到确认报文就认为报文损掉了,就要重传。

    流量控制

    应用滑动窗口和报文段的发送机会来进行流量控制。

    拥塞控制

    发送方保持一个拥塞窗口cwnd, 发送窗口 = 拥塞窗口。

    慢开端 : cwnd = 1, 然后每经由一个传输轮次就翻倍

    拥塞避免 : 让cwnd迟缓增大年夜, 每经由一个传输轮次就+1

    慢开端门限ssthresh :

    当cwnd < ssthresh, 应用慢开端算法当cwnd > ssthresh, 应用拥塞避免算法当cwnd = ssthresh, 随便

    拥塞控制

    只要断定收集出现拥塞, 把ssthresh设为当前发送拥塞窗口的一半(不克不及小于2),并把cwnd设为1,从新履行慢开端算法。

    快重传 : 接收方及时发送确认, 而发送方只要连续收到三个反复确认, 立时重传

    TCP三次握手

    TCP三次握手建立连接和四次挥手断开连接是面试爱问的常识点。

    TCP三次握手

    Q : 为什么要三次握手, 两次弗成以吗?

    A : 试想一下, A第一次发送请求连接, 然则在收集某节点滞留了, A超时重传, 然后这一次一切正常, A跟B就高兴地进行数据传输了. 比及连接释放了今后, 谁出神掉了的连接请求忽然到了B那, 如不雅是两次握手的话, B发送确认, 它们就算是建立起了连接了. 事实上A并不会理会这个确认, 因为我压根没有要传数据啊. 然则B却傻傻地认为稀有据要来, 苦苦等待. 结不雅就是造成资本的浪费.

    加倍接地气的解释就是 : A打德律风给B

    第一次握手 : 你好, 我是A, 你能听到我措辞吗第二次握手 : 听到了, 我是B, 你能听到我措辞吗第三次握手 : 听到了, 我们可以开端聊天了三次握手其实就是为了检测两边的发送和接收才能是否正常, 你说呢?

    TCP四次挥手


      推荐阅读

      MySQL该如何进行大数据量快速插入方法和语句优化?

    Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践 INSERT 语句的速度插入一个记录须要的时光由下列身分构成,个中的数字表示大年夜约比例:>>>详细阅读


    本文标题:Web开发应该知道的计算机网络知识

    地址:http://www.17bianji.com/lsqh/39159.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)