Ĭ��
���� �������� 13
�뿪��IM������Ʒ�¿ӣ�����3���¹����ҿ�Դ����ߣ������������·��... ��վ�����㽨��
����ɨä����һ������UDP�ĵ���ʱ���紫����Э�顪��QUIC����
΢��ɨһɨ��ע��

����������Ѷ�����з�����ʦ�޳ɵļ�����������Ҫ���� QUIC Э�������ı����ͺ������Եȡ�


1��д��ǰ��


�������� App���ڲ���Ҫ�κ��޸ĵ������¾������� 15% ���ϵķ����ٶȡ��ر�����������ʱ���ܹ����� 20% ���ϵķ����ٶȡ�

�������� App����Ƶ���л� 4G �� WIFI �����������£��������ߣ�����Ҫ�������û����κθ�֪���������� App������Ҫ TLS �İ�ȫ��Ҳ��ʵ�� HTTP2 ��·���õ�ǿ����

�������ող���˵ HTTP2 ����һ��������Э�飬�������ողŹ�ע�� TLS1.3 ��һ�������Ծ������̱�������Э�飬����������Э��ȴһֱ�ڱ���һ�������˵�Э����Ӱ������ս��

�����������˵�Э�飬�������־ͽ������족���������ڱ�׼��Ϊ��һ���Ļ���������Э�顣

��Ը�⻨һ����ʱ���˽�����Э��������Ը��Ͷ�뾫��ȥ�о�����Э��������Ը��ȫ���ƶ�ҵ����ʹ������Э������

�Ƽ������������ñ����е��Ѷ������Զ�һ��������������������(ʮ)��һ������ʱ�䣬���ٶ���QUICЭ������

2����������


������������������(ʮ)��һ������ʱ�䣬���ٶ���QUICЭ����
������ɨä����һ������UDP�ĵ���ʱ���紫����Э�顪��QUIC������
���û��������죺��һ��QUICЭ������Ѷ�ļ���ʵ��������
����ţ�Ƽ���������ʹ��QUICЭ��ʵ��ʵʱ��Ƶֱ��0���٣���

3����������


����ɨä����һ������UDP�ĵ���ʱ���紫����Э�顪��QUIC����_6ca20203jw1e8qgp5bmzyj2050050aa8.jpg
�޳ɣ���Ѷ�����з�����ʦ��Ŀǰ��Ҫ������Ѷ stgw(��Ѷ��ȫ�����أ������ع����������ƽ���Ѷ�ڲ�����Ѷ�����ƣ������Ƶ��߲㸺�ؾ��⼰ȫվ HTTPS ���롣�� HTTPS��SPDY��HTTP2��QUIC ��Ӧ�ò�Э�顢�����ܷ����������������缼�����û������ٶȡ��ֲ�ʽ�ļ��������н��������⡣������΢�������˽�����

4��QUIC ������


����ɨä����һ������UDP�ĵ���ʱ���紫����Э�顪��QUIC����_x1.jpg

Quic ȫ�� quick udp internet connection [1]�������� UDP ���������ӡ�������Ӣ�� quick г�������ơ��족������ Google ������ʹ�� udp ���ж�·����������Э�顣

Quic �������ڹ㷺Ӧ�õ� http2+tcp+tls Э������������ [2]��

  • ������ TCP �������ּ� TLS ����ʱ�䣻
  • �Ľ���ӵ�����ƣ�
  • ������ͷ�����Ķ�·���ã�
  • ����Ǩ�ƣ�
  • ǰ������������

��ͼ���������Ա�ͼ��
����ɨä����һ������UDP�ĵ���ʱ���紫����Э�顪��QUIC����_WX20180104-122733@2x.png

��ͼ��ͨ���ӳٶԱ�ͼ��
����ɨä����һ������UDP�ĵ���ʱ���紫����Э�顪��QUIC����_0rtt-graphic.jpg

5��Ϊʲô��Ҫ QUIC


5.1����


���ϸ����� 90 ������������ʼ����һֱ�����ڣ��󲿷ֵĻ�������������ֻʹ���˼�������Э�顣ʹ�� IPv4 ����·�ɣ�ʹ�� TCP �������Ӳ������������ƣ�ʹ�� SSL/TLS Э��ʵ�ִ��䰲ȫ��ʹ�� DNS ��������������ʹ�� HTTP ����Ӧ�����ݵĴ��䡣

���ҽ���ʮ�������⼸��Э���ķ�չ���dz�������TCP ��Ҫ��ӵ�������㷨�ĸĽ���SSL/TLS ������ͣ����ԭ�أ�����С�汾�ĸĶ���Ҫ�������׼���������TLS1.3[3] ��һ����Ծʽ�ı仯������ֹ�����죬��û����ʽ������IPv4 ��Ȼ��һ�����Ľ�����ʵ���� IPv6��DNS Ҳ������һ����ȫ�� DNSSEC������ IPv6 һ�����������Ƚ�����

�����ƶ����������ٷ�չ�Լ����������������������罻���ij���Խ��Խ�ḻ�����紫��������ҲԽ��Խ�Ӵ����û������紫��Ч�ʺ� WEB ��Ӧ�ٶȵ�Ҫ��ҲԽ��Խ�ߡ�

һ��������ʷ�ƾ�ʹ�ù㷺�Ĺ���Э�飬����һ�����û���ʹ�ó����Դ������ܵ�Ҫ����Խ��Խ�ߡ�

���¼��������Ѿõ�������ì�ܾͱ���Խ��Խͻ����

  • Э����ʷ�ƾõ����м��豸������
  • �����ڲ���ϵͳ��ʵ�ֵ���Э�鱾��������
  • �������ӵ������ӳٴ���
  • ��ͷ������

������С�ڼ���˵��һ�¡�

5.2�м��豸�Ľ���


������ TCP Э��ʹ�õ�̫�ã�Ҳ�dz��ɿ����������Ǻܶ��м��豸����������ǽ��NAT ���أ��������ȳ�����һЩԼ���׳ɵĶ�����

������Щ����ǽֻ����ͨ�� 80 �� 443������ͨ�����˿ڡ�NAT ������ת��������ַʱ��д��������ͷ�����п��ܵ���˫���޷�ʹ���µĴ�����ʽ�����������м�������ʱ�����ڰ�ȫ����Ҫ����ɾ��һЩ���Dz���ʶ��ѡ���ֶΡ�

TCP Э�鱾����֧�ֶ˿ڡ�ѡ����Ե����Ӻ��޸ġ��������� TCP Э����֪���˿ڼ�ѡ��ʹ�õ���ʷ̫�ƾã��м��豸�Ѿ���������ЩDZ���������Զ���Щ���ݵ��޸ĺ������⵽�м价�ڵĸ��Ŷ�ʧ�ܡ�

����Щ���ţ�Ҳ���ºܶ��� TCP Э���ϵ��Ż�����С�Ľ���������ά�衣

5.3�����ڲ���ϵͳ��ʵ�ֵ���Э�齩��


TCP ���ɲ���ϵͳ���ں�����ջ����ʵ�ֵģ�Ӧ�ó���ֻ��ʹ�ã�����ֱ���޸ġ���ȻӦ�ó����ĸ��µ����dz����ٺͼ򵥡����� TCP �ĵ���ȴ�dz�������ԭ�����Dz���ϵͳ�������鷳��

�����ƶ��ն˸������У������ƶ��˲����û��IJ���ϵͳ������Ȼ�����ͺ�����ʱ�䡣PC �˵�ϵͳ�����ͺ��ø������أ�windows xp ���ڻ��д����û���ʹ�ã��������Ѿ����ڿ� 20 �ꡣ

������ϵͳ�������û��������������ڲ���ϵͳ�����漰���ײ����������п��ĸ��£�����Ҳ�Ƚϱ��غͻ�����

��Ҳ����ζ�ż�ʹ TCP �бȽϺõ����Ը��£�Ҳ���ѿ����ƹ㡣���� TCP Fast Open������Ȼ 2013 ���ͱ������ˣ����� Windows �ܶ�ϵͳ�汾��Ȼ��֧������

5.4�������ӵ������ӳٴ�


������ HTTP1.0/1.1 ���� HTTPS��HTTP2����ʹ���� TCP ���д��䡣HTTPS �� HTTP2 ����Ҫʹ�� TLS Э�������а�ȫ���䡣

���ͳ��������������ӳ٣�

  • 1��TCP �������ֵ��µ� TCP ���ӽ������ӳ٣�
  • 2��TLS ��ȫ������Ҫ���� 2 �� RTT ���ܽ���������������Ҫ 1 �� RTT �������ӳ١�

���ںܶ������ӳ����������������ӳ�Ӱ���ܴ������޷�������

5.5��ͷ����


��ͷ������Ҫ�� TCP Э���Ŀɿ��Ի��������ġ�TCP ʹ�����к�����ʶ���ݵ�˳�������ݱ��밴��˳������������ǰ�������ݶ�ʧ�����������ݾ��㵽����Ҳ����֪ͨӦ�ò���������

���� TLS Э������Ҳ��һ����ͷ��������Ϊ TLS Э�鶼�ǰ��� record ���������ݵģ�����һ�� record �ж�ʧ�����ݣ�Ҳ�ᵼ������ record �޷���ȷ������

����������TCP �� TLS1.2 ֮ǰ��Э�������Žṹ�Ե����⣬�������������е� TCP��TLS Э��֮��ʵ��һ��ȫ�µ�Ӧ�ò�Э�飬�����ڲ���ϵͳ���м��豸�����û���֧�֡������ɱ��dz��ߣ������dz�����

���� QUIC Э��ѡ���� UDP����Ϊ UDP ����û�����ӵĸ������Ҫ�������֣��Ż������ӽ����������ӳ٣�ͬʱ��Ӧ�ó�������ʵ���� TCP �Ŀɿ��ԣ�TLS �İ�ȫ�Ժ� HTTP2 �IJ����ԣ�ֻ��Ҫ�û��˺ͷ����˵�Ӧ�ó���֧�� QUIC Э�飬��ȫ�ܿ��˲���ϵͳ���м��豸�����ơ�

6��QUIC ��������


6.1���ӽ�����ʱ��


0RTT ��������˵�� QUIC ���� HTTP2 �������������ơ���ʲô�� 0RTT �����أ�

�����������㺬�壺

  • ������ 0RTT ���ܽ������ӣ�
  • ���ܲ� 0RTT ���ܽ����������ӡ�

����ɨä����һ������UDP�ĵ���ʱ���紫����Э�顪��QUIC����_1.jpeg
�� ͼ 1 HTTPS �� QUIC ��������

������ͼ������ HTTPS ��һ����ȫ���ֵĽ������̣���Ҫ 3 �� RTT�������� Session Resumption[14]��Ҳ��Ҫ���� 2 �� RTT��

�� QUIC �أ����ڽ����� UDP �Ļ����ϣ�ͬʱ��ʵ���� 0RTT �İ�ȫ���֣������ڴ󲿷������£�ֻ��Ҫ 0 �� RTT ����ʵ�����ݷ��ͣ���ʵ��ǰ������ [15] �Ļ����ϣ����� 0RTT �ijɹ������� TLS �� Sesison Ticket[13] Ҫ�ߺܶࡣ

6.2�Ľ���ӵ������


TCP ��ӵ������ʵ���ϰ������ĸ��㷨����������ӵ�����⣬�����ش������ٻָ� [22]��

QUIC Э�鵱ǰĬ��ʹ���� TCP Э���� Cubic ӵ�������㷨 [6]��ͬʱҲ֧�� CubicBytes, Reno, RenoBytes, BBR, PCC ��ӵ�������㷨��

��ӵ���㷨����������QUIC ֻ�ǰ��� TCP Э������ʵ����һ�飬��ô QUIC Э�鵽�׸Ľ�����Щ�����أ���Ҫ�����¼��㡣

���ɲ��Ρ���

ʲô�пɲ����أ������ܹ��dz���������Ч��������ֹͣ�����������·��棺

  • 1��Ӧ�ó�����������ʵ�ֲ�ͬ��ӵ�������㷨������Ҫ����ϵͳ������Ҫ�ں�֧�֡�����һ����Ծ����Ϊ��ͳ�� TCP ӵ�����ƣ�����Ҫ�˵��˵�����Э��ջ֧�֣�����ʵ�ֿ���Ч�������ں˺Ͳ���ϵͳ�IJ����ɱ��dz��ߣ��������ںܳ������ڲ�Ʒ���ٵ��������籬ըʽ�����Ľ��죬��Ȼ�е����㲻��������
  • 2����ʹ�ǵ���Ӧ�ó����IJ�ͬ����Ҳ��֧�����ò�ͬ��ӵ�����ơ�������һ̨���������������û����绷��Ҳǧ�����𣬽��ϴ����ݼ��˹����ܴ�����������Ϊ�����û��ṩ��ͬ�ĵ��ָ��Ӿ�׼������Ч��ӵ�����ơ����� BBR �ʺϣ�Cubic �ʺϣ�
  • 3��Ӧ�ó�������Ҫͣ������������ʵ��ӵ�����Ƶı����������ڷ�����ֻ��Ҫ�޸�һ�����ã�reload һ�£���ȫ����Ҫֹͣ��������ʵ��ӵ�����Ƶ��л���

STGW �����ò����������Ż������ǿ������Բ�ͬҵ�񣬲�ͬ������ʽ��������ͬ�� RTT��ʹ�ò�ͬ��ӵ�������㷨��

������������ Packet Number����

TCP Ϊ�˱�֤�ɿ��ԣ�ʹ���˻����ֽ����ŵ� Sequence Number �� Ack ��ȷ����Ϣ�����򵽴

QUIC ͬ����һ���ɿ���Э�飬��ʹ�� Packet Number ������ TCP �� sequence number������ÿ�� Packet Number ���ϸ�������Ҳ����˵���� Packet N ��ʧ�ˣ��ش��� Packet N �� Packet Number �Ѿ����� N������һ���� N ����ֵ���� TCP �أ��ش� segment �� sequence number ��ԭʼ�� segment �� Sequence Number ���ֲ��䣬Ҳ���������������ԣ������� Tcp �ش����������⡣

����ɨä����һ������UDP�ĵ���ʱ���紫����Э�顪��QUIC����_2.jpeg
�� ͼ 2 Tcp �ش�������

����ͼ��ʾ����ʱ�¼� RTO �����󣬿ͻ��˷����ش���Ȼ�����յ��� Ack ���ݡ��������к�һ�������� Ack ���ݵ�����ԭʼ��������Ӧ�����ش���������Ӧ�أ������жϡ�

��������ԭʼ��������Ӧ����ʵ�������ش���������Ӧ����ͼ�󣩣��ᵼ�²��� RTT ���������������ش���������Ӧ����ʵ������ԭʼ��������Ӧ���ֺ����׵��²��� RTT ��С��

���� Quic �ش��� Packet ��ԭʼ Packet �� Pakcet Number ���ϸ������ģ����Ժ����׾ͽ������������⡣

����ɨä����һ������UDP�ĵ���ʱ���紫����Э�顪��QUIC����_3.jpeg
�� ͼ 3 Quic �ش�û��������

����ͼ��ʾ��RTO �����󣬸����ش��� Packet Number ����ȷ����ȷ�� RTT ���㡣���� Ack �� Packet Number �� N+M���͸����ش������������� RTT������ Ack �� Pakcet Number �� N���͸���ԭʼ������ʱ���������� RTT��û�������ԡ�

���ǵ��������ϸ������� Packet Number �϶����޷���֤���ݵ�˳���ԺͿɿ��ԡ�QUIC ��������һ�� Stream Offset �ĸ��

��һ�� Stream ���Ծ������� Packet ���䣬Packet Number �ϸ�������û������������ Packet ���� Payload ������ Stream �Ļ�������Ҫ���� Stream �� Offset ����֤Ӧ�����ݵ�˳����������! δ�ҵ�����Դ����ʾ�����Ͷ��Ⱥ������� Pakcet N �� Pakcet N+1��Stream �� Offset �ֱ��� x �� x+y��

���� Packet N ��ʧ�ˣ������ش����ش��� Packet Number �� N+2���������� Stream �� Offset ��Ȼ�� x���������� Packet N + 2 �Ǻ󵽵ģ���Ȼ���Խ� Stream x �� Stream x+y ����˳����֯����������Ӧ�ó���������

����ɨä����һ������UDP�ĵ���ʱ���紫����Э�顪��QUIC����_4.jpeg
�� ͼ 4 Stream Offset ��֤������

�������� Reneging����

ʲô�� Reneging �أ����ǽ��շ������Ѿ����ղ����ϱ��� SACK ѡ�������� [8]��TCP Э�鲻����������Ϊ������Э������������������Ϊ����Ҫ�ǿ��ǵ���������Դ���ޣ����� Buffer �������ڴ治����������

Reneging �������ش��������ܴ��ĸ��š���Ϊ Sack ���Ѿ��������յ��ˣ����ǽ��ն���ʵ�϶����˸����ݡ�

QUIC ��Э��������ֹ Reneging��һ�� Packet ֻҪ�� Ack������Ϊ��һ������ȷ���գ����������ָ��š�

�������� Ack �顿��

TCP �� Sack ѡ���ܹ����߷��ͷ��Ѿ����յ������� Segment �ķ�Χ�����㷢�ͷ�����ѡ�����ش���

���� TCP ͷ������ֻ�� 60 ���ֽڣ���׼ͷ��ռ���� 20 �ֽڣ����� Tcp Option ���󳤶�ֻ�� 40 �ֽڣ��ټ��� Tcp Timestamp option ռ���� 10 ���ֽ� [25]���������� Sack ѡ����ֻ�� 30 ���ֽڡ�

ÿһ�� Sack Block �ij����� 8 �������� Sack Option ͷ�� 2 ���ֽڣ�Ҳ����ζ�� Tcp Sack Option ����ֻ���ṩ 3 �� Block��

���� Quic Ack Frame ����ͬʱ�ṩ 256 �� Ack Block���ڶ����ʱȽϸߵ������£������� Sack Block �������������Ļָ��ٶȣ������ش�����

��Ack Delay ʱ�䡿��

Tcp �� Timestamp ѡ������һ������ [25]����ֻ�ǻ����˷��ͷ���ʱ����������û�м������ն˽��յ� segment ������ Ack �� segment ��ʱ�䡣����ʱ�����Լ���Ϊ Ack Delay��

�����ͻᵼ�� RTT �����������ͼ��
����ɨä����һ������UDP�ĵ���ʱ���紫����Э�顪��QUIC����_5.jpeg

������Ϊ TCP �� RTT ���㣺
����ɨä����һ������UDP�ĵ���ʱ���紫����Э�顪��QUIC����_6.jpeg

�� Quic �������£�
����ɨä����һ������UDP�ĵ���ʱ���紫����Э�顪��QUIC����_7.jpeg

��Ȼ RTT �ľ�������û����ô�򵥣���Ҫ�������ο���ʷ��ֵ����ƽ�����㣬�ο����¹�ʽ [9]��
����ɨä����һ������UDP�ĵ���ʱ���紫����Э�顪��QUIC����_8.jpeg

6.3���� stream �� connecton ��������������


QUIC ���������� [22] ���� HTTP2������ Connection �� Stream �����ṩ�������������ơ�Ϊʲô��Ҫ�������������أ���Ҫ����Ϊ QUIC ֧�ֶ�·���á�

Stream ������Ϊ����һ�� HTTP ������

Connection ��������һ�� TCP ���ӡ���·������ζ����һ�� Connetion �ϻ�ͬʱ���ڶ��� Stream������Ҫ�Ե��� Stream ���п��ƣ�����Ҫ�������� Stream �����������ơ�

QUIC ʵ���������Ƶ�ԭ���Ƚϼ򵥣�

ͨ�� window_update ֡���߶Զ��Լ����Խ��յ��ֽ������������ͷ��Ͳ��ᷢ�ͳ����������������ݡ�

ͨ�� BlockFrame ���߶Զ������������Ʊ������ˣ��޷��������ݡ�

QUIC ���������ƺ� TCP �е�������TCP Ϊ�˱�֤�ɿ��ԣ��������������һ���ʱ�ij���ȡ�����Ѿ�ȷ�ϵ��ֽ����������м����ֶ������������յ��˸������ŵ� Segment������Ҳ�޷������������кš�

�� QUIC ��ͬ��������ǰ��Щ packet û�н��յ������Ļ���ֻȡ���ڽ��յ�������ƫ���ֽ�����

����ɨä����һ������UDP�ĵ���ʱ���紫����Э�顪��QUIC����_9.jpeg
�� ͼ 5 Quic Flow Control

���� Stream��
����ɨä����һ������UDP�ĵ���ʱ���紫����Э�顪��QUIC����_10.jpeg

���� Connection��
����ɨä����һ������UDP�ĵ���ʱ���紫����Э�顪��QUIC����_11.jpeg

ͬ���أ�STGW Ҳ�����Ӻ� Stream ���������˲�ͬ�Ĵ�������

����Ҫ���ǣ����ǿ������ڴ治���������δ������ܳ�������ʱ��ͨ���������������ƴ������ʣ����Ϸ��������ԡ�

6.4û�ж�ͷ�����Ķ�·����


QUIC �Ķ�·���ú� HTTP2 ���ơ���һ�� QUIC �����Ͽ��Բ������Ͷ��� HTTP ���� (stream)������ QUIC �Ķ�·�������� HTTP2 ��һ���ܴ������ơ�

QUIC һ�������ϵĶ��� stream ֮��û���������������� stream2 ����һ�� udp packet��Ҳֻ��Ӱ�� stream2 �Ĵ���������Ӱ�� stream2 ֮ǰ��֮���� stream �Ĵ�����

��Ҳ���ںܴ��̶��ϻ������������˶�ͷ������Ӱ�졣

��·������ HTTP2 ��ǿ�������� [7]���ܹ�������������һ�� TCP ������ͬʱ����ȥ����Ҳ������ TCP ��һ�����⣬��ͷ���� [11]������ͼʾ��
����ɨä����һ������UDP�ĵ���ʱ���紫����Э�顪��QUIC����_12.jpeg
�� ͼ 6 HTTP2 ��ͷ����

HTTP2 ��һ�� TCP ������ͬʱ���� 4 �� Stream������ Stream1 �Ѿ���ȷ�������Ӧ�ò���ȡ������ Stream2 �ĵ����� tcp  segment ��ʧ�ˣ�TCP Ϊ�˱�֤���ݵĿɿ��ԣ���Ҫ���Ͷ��ش��� 3 �� segment ����֪ͨӦ�ò���ȡ����ȥ�����ݣ���Ȼ����ʱ�� Stream3 �� Stream4 ��ȫ�������Ѿ������˽��նˣ�����������ס�ˡ�

�������ˣ����� HTTP2 ǿ��ʹ�� TLS��������һ�� TLS Э�������Ķ�ͷ���� [12]��

����ɨä����һ������UDP�ĵ���ʱ���紫����Э�顪��QUIC����_13.jpeg
�� ͼ 7 TLS ��ͷ����

Record �� TLS Э�鴦������С��λ���������ܳ��� 16K��һЩ���������� Nginx Ĭ�ϵĴ�С���� 16K������һ�� record ���뾭������һ����У�����ܽ��мӽ��ܣ�����һ�� 16K �� record�����㶪��һ���ֽڣ�Ҳ�ᵼ���Ѿ����յ��� 15.99K �����޷���������Ϊ����������

�� QUIC ��·����Ϊʲô�ܱ������������أ�

  • 1��QUIC �������Ĵ��䵥Ԫ�� Packet�����ᳬ�� MTU �Ĵ�С���������ܺ���֤���̶��ǻ��� Packet �ģ�������Խ���� Packet���������ܱ��� TLS Э�����ڵĶ�ͷ������
  • 2��Stream ֮���໥���������� Stream2 ����һ�� Pakcet������Ӱ�� Stream3 �� Stream4�������� TCP ��ͷ������

����ɨä����һ������UDP�ĵ���ʱ���紫����Э�顪��QUIC����_14.jpeg
�� ͼ 8 QUIC ��·����ʱû�ж�ͷ����������

��Ȼ�����������е� QUIC ���ݶ������ܵ���ͷ������Ӱ�죬���� QUIC ��ǰҲ��ʹ�� Hpack ѹ���㷨 [10]�������㷨�����ƣ���ʧһ��ͷ������ʱ������������ͷ������

������˵��QUIC �ڴ�����������ʱ��������Ƶ���ܵ���ͷ������Ӱ����С��

6.5������֤�ı���


TCP Э��ͷ��û�о����κμ��ܺ���֤�������ڴ��������к����ױ��м������豸�۸ģ�ע���������������޸����кš��������ڡ���Щ��Ϊ�п����dz��������Ż���Ҳ�п���������������

���� QUIC �� packet ����˵����װ�������ݡ����˸������ı��� PUBLIC_RESET �� CHLO�����б���ͷ�����Ǿ�����֤�ģ����� Body ���Ǿ������ܵġ�

����ֻҪ�� QUIC �����κ��޸ģ����ն˶��ܹ���ʱ���֣���Ч�ؽ����˰�ȫ���ա�

����ͼ��ʾ����ɫ������ Stream Frame �ı���ͷ��������֤����ɫ�����DZ������ݣ�ȫ���������ܡ�

����ɨä����һ������UDP�ĵ���ʱ���紫����Э�顪��QUIC����_15.jpeg

6.6����Ǩ��


һ�� TCP ���� [17] ������Ԫ����ʶ�ģ�Դ IP��Դ�˿ڣ�Ŀ�� IP��Ŀ�Ķ˿ڣ���ʲô������Ǩ���أ����ǵ������κ�һ��Ԫ�ط����仯ʱ������������Ȼά���ţ��ܹ�����ҵ���߼����жϡ���Ȼ��������Ҫ��ע���ǿͻ��˵ı仯����Ϊ�ͻ��˲��ɿز������绷�����������仯���������˵� IP �Ͷ˿�һ�㶼�ǹ̶��ġ�

��������ʹ���ֻ��� WIFI �� 4G �ƶ������л�ʱ���ͻ��˵� IP �϶��ᷢ���仯����Ҫ���½����ͷ����˵� TCP ���ӡ�

�ֱ�������ʹ�ù��� NAT ����ʱ����Щ���Ӿ���ʱ��Ҫ���°󶨶˿ڣ����¿ͻ��˵Ķ˿ڷ����仯��ͬ����Ҫ���½��� TCP ���ӡ�

���� TCP �����ӱ仯��MPTCP[5] ��ʵ�Ѿ����˽����������������� MPTCP ��Ҫ����ϵͳ������Э��ջ֧�֣����������dz�����Ŀǰ�������á�

���Դ� TCP ���ӵĽǶ������������������޽��ġ�

�� QUIC ��������������Ǩ���أ��ܼ򵥣��κ�һ�� QUIC ���Ӳ����� IP ���˿���Ԫ����ʶ��������һ�� 64 λ����������Ϊ ID ����ʶ���������� IP ���߶˿ڷ����仯ʱ��ֻҪ ID ���䣬����������Ȼά���ţ��ϲ�ҵ���߼���֪�����仯�������жϣ�Ҳ�Ͳ���Ҫ������

�������� ID �ǿͻ������������ģ����ҳ����� 64 λ�����Գ�ͻ���ʷdz��͡�

6.7��������


���⣬QUIC ����ʵ��ǰ����������������Ҫ�İ�����������Ϣ������ʧʱ���ܹ�����������Ϣ��ԭ��������Ϣ��

QUIC ����ʵ��֤��ѹ��������֤�鴫���������԰�ͷ������֤�ȡ�

����ƪ�������IJ�����ϸ���ܣ�����Ȥ�Ŀ��Բο��ĵ� [23] ���ĵ� [4] ���ĵ� [26]��

7�������



��ԭ�����ӣ����˽�����

��¼�����ؼ�������


[1] �������̻������ϣ�
��TCP/IP���� - ��11�¡�UDP���û����ݱ�Э����
��TCP/IP���� - ��17�¡�TCP����������Э����
��TCP/IP���� - ��18�¡�TCP���ӵĽ�������ֹ��
��TCP/IP���� - ��21�¡�TCP�ij�ʱ���ش���
���������£��ı�������TCP/IPЭ�飨������ͼ���ֻ����㣩��
��ͨ���׶�-��������TCPЭ�飨�ϣ������ۻ�����
��ͨ���׶�-��������TCPЭ�飨�£���RTT���������ڡ�ӵ��������
�����۾��䣺TCPЭ����3��������4�λ��ֹ���������
��������ϵʵ�ʣ�Wiresharkץ������TCP 3�����֡�4�λ��ֹ�����
������������ͨѶЭ����ϵͼ���������ذ棩��
��UDP��һ�����Ĵ�С�����ܶ�������
��P2P��������(һ)��NAT���⡪����ϸԭ����P2P������
��P2P��������(��)��P2P�е�NAT��Խ(����)����������
��P2P��������(��)��P2P����֮STUN��TURN��ICE������
��ͨ���׶�����������P2P�����е�NAT��͸ԭ����
����������������(һ)����̨����������TCP���������׿����ж�����
����������������(��)����һ��10�꣬������C10K��������������
����������������(��)����һ��10�꣬��ʱ������C10M������������
����������������(��)����C10K��C10M����������Ӧ�õ�����̽����
����Ϊ��֪����������(һ)��dz��TCPЭ���е�������֢(��ƪ)��
����Ϊ��֪����������(��)��dz��TCPЭ���е�������֢(��ƪ)��
����Ϊ��֪����������(��)���ر�TCP����ʱΪʲô��TIME_WAIT��CLOSE_WAIT��
����Ϊ��֪����������(��)�������о�����TCP���쳣�ر���
����Ϊ��֪����������(��)��UDP�������Ժ͸��ؾ�����
����Ϊ��֪����������(��)������������UDPЭ�鲢�ú�����
����Ϊ��֪����������(��)�������ò��ɿ���UDP���Ŀɿ�����
������������������(һ)��������������ͨ��Э�飨��ƪ����
������������������(��)��������������ͨ��Э�飨��ƪ����
������������������(��)����������TCPЭ��һƪ�͹���
������������������(��)����������TCP��UDP�IJ�����
������������������(��)����������Ϊʲô˵UDP��ʱ��TCP����������
������ɨä����һ������UDP�ĵ���ʱ���紫����Э�顪��QUIC������
>> ����ͬ������ ����

[2] NIO�첽�����������ϣ�
��Java��һ����������ģ��AIOԭ����LinuxϵͳAIO������
���йء�Ϊ��ѡ��Netty����11�����ʼ�������
����ԴNIO���ܰ��ԡ�������������MINA��������Netty?��
��ѡNetty����Mina�������о����Աȣ�һ����
��ѡNetty����Mina�������о����Աȣ�������
��NIO��������(һ)�������˻���Netty4��UDP˫��ͨ��Demo��ʾ��
��NIO��������(��)�������˻���MINA2��UDP˫��ͨ��Demo��ʾ��
��NIO��������(��)��iOS��MINA2��Netty4�Ŀ�ƽ̨UDP˫��ͨ��ʵս��
��NIO��������(��)��Android��MINA2��Netty4�Ŀ�ƽ̨UDP˫��ͨ��ʵս��
��Netty 4.xѧϰ��һ����ByteBuf������
��Netty 4.xѧϰ��������Channel��Pipeline������
��Netty 4.xѧϰ���������߳�ģ��������
��Apache Mina���ܸ߼�ƪ��һ����IoFilter������
��Apache Mina���ܸ߼�ƪ��������IoHandler������
��MINA2 �߳�ԭ���ܽᣨ���򵥲���ʵ������
��Apache MINA2.0 ����ָ�ϣ����İ棩[��������]��
��MINA��Netty��Դ���루�����Ķ��棩������������
������MINA���ݴ�����TCP��ճ����ȱ�����⣨��Դ�룩��
������Mina�ж���ͬ����Filterʵ��������������
��ʵ���ܽ᣺Netty3.x����Netty4.x��������Щ�ӣ��߳�ƪ����
��ʵ���ܽ᣺Netty3.x VS Netty4.x���߳�ģ����
������Netty�İ�ȫ�ԣ�ԭ�����ܡ�������ʾ����ƪ����
������Netty�İ�ȫ�ԣ�ԭ�����ܡ�������ʾ����ƪ����
������Netty�������˳����ƺ�ԭ����
��NIO�������⣺Netty�ĸ�����֮����
��Twitter������ʹ��Netty 4������JVM��GC���������ģ���
�����Ըɻ�������Nettyʵ�ֺ������������ͷ�������Ҫ����
��Netty�ɻ�����������������������TCP���ؼ���ʵ���ܽ���
>> ����ͬ������ ����

[3] �й�IM/���͵�ͨ�Ÿ�ʽ��Э����ѡ����
��������������TCP��UDP��������
��ΪʲôQQ�õ���UDPЭ��������TCPЭ�飿��
���ƶ��˼�ʱͨѶЭ��ѡ����UDP����TCP����
������ѡ����ʱͨѶӦ�õ����ݴ�����ʽ��
��ǿ�н��齫Protobuf��Ϊ���ļ�ʱͨѶӦ�����ݴ�����ʽ��
��ȫ��λ���⣺Protobuf���ܵ�����û�б�JSON��5������
���ƶ���IM������Ҫ���Եļ������⣨��ͨ��Э��ѡ������
�������ƶ���IM��������Щ�ӣ��ܹ����ơ�ͨ��Э���Ϳͻ�����
��������ϵʵ�ʣ�һ�׵��͵�IMͨ��Э������������
��58����ʵʱ��Ϣϵͳ��Э�����Ƶȼ���ʵ��������
������������NodeJS��ʹ��Google��Protobuf��
������ɨä����һ������UDP�ĵ���ʱ���紫����Э�顪��QUIC������
>> ����ͬ������ ����

��ʱͨѶ�� - ��ʱͨѶ������������ ��Դ�� - ��ʱͨѶ������������

��һƪ����Ϊ��֪����������(��)�������ò��ɿ���UDP���Ŀɿ�����һƪ�������������̼�����ѯ��

��������¼�����¼���ר��

�Ƽ�����
���� 13
�����
д�IJ���, ��!
����Э��ʵ��ֻҪhook����ϵͳ��tcp���ص�api�Ϳ����˰�
���ã�x931609201 ������ 2018-02-28 18:52
����Э��ʵ��ֻҪhook����ϵͳ��tcp���ص�api�Ϳ����˰�

QUIC��google����UDP��������Э�飬�����Dz���ϵͳ��һ�㣬��Ϊ��������ϵͳ������google���ƣ�������ʱ��������ͨ�õı�׼Э��
�dz��ã��������Ļ�������ƪ�������µ����������⡣
�������ڱ�����һЩ���ɣ��ϸ���˵QUIC����Ӧ������Ӧ�ò�Э�飬���紫�����ǻ���UDP��������Ӧ�ò�ʵ��������TCP�Ĺ���
���ã�malt93 ������ 2018-07-28 16:52
�dz��ã��������Ļ�������ƪ�������µ����������⡣
�������ڱ�����һЩ���ɣ��ϸ���˵QUIC����Ӧ������Ӧ ...

�����ñ�������ôд��
���ã�JackJiang ������ 2018-07-28 17:43
�����ñ�������ôд��

���򵥵ĸķ��ǰѡ��㡱ȥ��
����֪��QUIC��IP�˿ںŻ�����64λ��ID��û��IP��ַ����ô���������ӵ��أ�
���ã�˾��ժ�� ������ 2019-02-15 17:17
����֪��QUIC��IP�˿ںŻ�����64λ��ID��û��IP��ַ����ô���������ӵ��أ�

˵����QUICֻ�Ǹ�Ӧ�ò���Э�飬�����������е�ͨ�Ź淶��������Э��ջ�����·��������Կ϶���Ҫip+�˿ڵ�
Э���Ż��ܶ࣬QUIC�ڰ�ȫ�������ֲ�֪���磬��Ϊ����UDP���������ԣ���ô����UDP������
���ã�pandainfo ������ 2019-02-26 14:08
Э���Ż��ܶ࣬QUIC�ڰ�ȫ�������ֲ�֪���磬��Ϊ����UDP���������ԣ���ô����UDP������

�㿼�ǵ��е�������QUIC����ģ�ƹ���ʱ�����ò��٣����ڻ��Ǵ�������
��������
ǩ��: read the fucking source code
ѧϰ
ǩ��: ��������ͼ��
����¥�� ×
ʹ��΢�Ŵ��ͣ� ʹ��֧�������ͣ�

���ض���