zoukankan      html  css  js  c++  java
  • 网络基础

    1.TCP和UDP

    区别

    TCP:1、有链接,可靠,2、有三次握手协议,端开链接有4次握手,有重传机制。3、TCP利用seq序列号对包排序。
    4、面向字节流,虽然应用程序和TCP的交互是一次一个大小不等的数据块,但TCP把应用程序看成是一连串的无结构字节流。TCP有一个缓冲,当应用程序传送的数据块太长,会划分短,如果发送的太短,会积累足够的字节流构成报文发送出去。
    5、TCP有流量控制,头部是20bytes。
    UDP:1、是无连接的,不可靠,2、也没有重传机制。3、对于有序性上,udp没有。4、面向报文的传输方式,应用层交给UDP多长的报文,UDP就照样发送,一次发送一个报文。应用程序必须选择合适大小的报文。如果太长,IP层需要分片,UDP对于应用层交给的报文不合并也不拆分,保留边界。照样发送。5、UDP没有流量控制,头部8bytes。

    应用场景

    TCP:效率要求不高,但准确性高得场合。传输中可以对数据进行确认,重发,排序等操作。(比如邮件、文件传输)
    UDP:效率要求高,但是准确性相对一般得场景。比如QQ聊天、在线视频、直播。

    2.TCP三次握手


    几个关键点:
    (第一次握手)
    PS1:SYN=1,ACK=0表示该报文段为连接请求报文。
    PS2:x为本次TCP通信的字节流的初始序号。 TCP规定:SYN=1的报文段不能有数据部分,但要消耗掉一个序号。
    (第二次握手)
    PS1:SYN=1,ACK=1表示该报文段为连接同意的应答报文。 PS2:seq=y表示服务端作为发送者时,发送字节流的初始序号。 PS3:ack=x+1表示服务端希望下一个数据报发送序号从x+1开始的字节。
    (第三次握手)
    当客户端收到连接同意的应答后,还要向服务端发送一个确认报文段,表示:服务端发来的连接同意应答已经成功收到。 该报文段的头部为:ACK=1,seq=x+1,ack=y+1。 客户端发完这个报文段后便进入ESTABLISHED状态,服务端收到这个应答后也进入ESTABLISHED状态,此时连接的建立完成!

    3.TCP四次挥手

    4.TCP流量控制/拥塞控制

  • 相关阅读:
    TLPI读书笔记第32章:线程取消
    TLPI读书笔记第30章:线程同步
    Javascript事件:this.value()和this.select()
    Unknown tag (s:property)的原因
    maven web项目中运行stucts2报404的解决方案
    maven web项目的web.xml报错The markup in the document following the root element must be well-formed.
    JAVA实现 springMVC方式的微信接入、实现消息自动回复
    jquery easyui datagrid使用参考
    SQL两个字段排序
    windows下 zookeeper dubbo 安装+配置+demo 详细图文教程
  • 原文地址:https://www.cnblogs.com/EvansPudding/p/12702424.html
Copyright © 2011-2022 走看看