网络

作者: 技术灭霸 | 来源:发表于2020-04-25 23:47 被阅读0次

1、http协议内容

image.png

2、TCP具体是通过怎样的方式来保证数据的顺序化传输呢?

  1. 主机每次发送数据时,TCP就给每个数据包分配一个序列号并且在一个特定的时间内等待接收主机对分配的这个序列号进行确认,
  2. 如果发送主机在一个特定时间内没有收到接收主机的确认,则发送主机会重传此数据包。
  3. 接收主机利用序列号对接收的数据进行确认,以便检测对方发送的数据是否有丢失或者乱序等,
  4. 接收主机一旦收到已经顺序化的数据,它就将这些数据按正确的顺序重组成数据流并传递到高层进行处理。

3、TCP协议规定2MSL等待的原因

MSL(最大报文存活时间)
1、保证TCP协议的全双工连接能够可靠关闭
2、保证这次连接的重复数据段从网络中消失

4、IO的read()/write()为什么阻塞

读写socket通过inputstream和outputstream实现,而文件读写,虚拟机根本做不了,最终还是通过JVM委托给操作系统,所以当前线程除了阻塞等待直到读取数据,啥也干不了。

5、TCP Keepalive

作用

  1. 探测连接的对端是否存活
  2. 防止中间设备因超时删除连接相关的连接表

定义一个时间段,在这个时间段内,如果没有任何连接相关的活动,TCP 保活机制会开始作用,每隔一个时间间隔,发送一个探测报文,该探测报文包含的数据非常少,如果连续几个探测报文都没有得到响应,则认为当前的 TCP 连接已经死亡,系统内核将错误信息通知给上层应用程序

上述的可定义变量,分别被称为保活时间、保活时间间隔和保活探测次数,默认设置是 7200 秒(2 小时)、75 秒和 9 次探测。

如果开启了 TCP 保活,需要考虑以下几种情况:

  1. 第一种,对端程序是正常工作的。当 TCP 保活的探测报文发送给对端, 对端会正常响应,这样 TCP 保活时间会被重置,等待下一个 TCP 保活时间的到来。
  2. 第二种,对端程序崩溃并重启。当 TCP 保活的探测报文发送给对端后,对端是可以响应的,但由于没有该连接的有效信息,会产生一个 RST 报文,这样很快就会发现 TCP 连接已经被重置。
  3. 第三种,是对端程序崩溃,或对端由于其他原因导致报文不可达。当 TCP 保活的探测报文发送给对端后,石沉大海,没有响应,连续几次,达到保活探测次数后,TCP 会报告该 TCP 连接已经死亡。

问题:

  1. 在短暂的故障期间,Keepalive设置不合理时可能会因为短暂的网络波动而断开健康的TCP连接
  2. 需要消耗额外的宽带和流量
  3. 在以流量计费的互联网环境中增加了费用开销

HTTP协议的Keep-Alive意图在于TCP连接复用,同一个连接上串行方式传递请求-响应数据;TCP的Keepalive机制意图在于探测连接的对端是否存活。

6、syn洪水攻击

在S返回一个确认的SYN-ACK包的时候,S可能由于各种原因不会接到C回应的ACK包。这个也就是所谓的半开放连接,S需要 耗费一定的数量的系统内存来等待这个未决的连接,虽然这个数量是受限,但是恶意者可以通过创建很多的半开放式连接来发动SYN洪水攻击 。

7、TCP_NODELAY与Nagle算法

传统的传输模式很容易将窄窄的带宽挤满而丢包,再重传、再丢包的恶性循环。
于是Nagle算法通过先把数据缓存起来再一起发送,减少需要传输的数据包,提高效率,唯一的不足是,可能会有一些延迟。

启动TCP_NODELAY,就意味着禁用了Nagle算法,允许小包的发送,数据传输非常少,延时较低。

8、为什么udp不会粘包

  1. TCP协议是面向流的协议,UDP是面向消息的协议
  2. UDP段都是一条消息,应用程序必须以消息为单位提取数据,不能一次提取任意字节的数据
  3. UDP具有保护消息边界,在每个UDP包中就有了消息头(消息来源地址,端口等信息)

9、同一个IP同一个端口可以同时建立tcp和udp的连接吗?

可以,同一个端口虽然udp和tcp的端口数字是一样的,但实质他们是不同的端口,所以是没有影响的,从底层实质分析,对于每一个连接内核维护了一个五元组,包含了源ip,目的ip、源端口目的端口、以及传输协议,在这里尽管前4项都一样,但是传输协议是不一样的,所以内核会认为是2个不同的连接,在ip层就会进行开始分流,tcp的走tcp,udp走udp。

相关文章

  • 网络!网络!

    ...

  • 网络,网络

    敲击键盘,滴滴答答,行云流水,我和你在无形的世界中产生了存在着的联系。落日,似乎看不到,看到的,只是手中的那块屏幕...

  • 网络?网络!

    网络是一片浩瀚的海,在网络初建之时,如一片处女地,在上面初生了各种各样文化的苗,虽星星点点却也清新。或许是审...

  • 网络—网络婴儿

    在餐馆你可能看到,专注的母亲盯着手机,而在她臂弯里的儿童却不知所措;在家里,母亲在厨房里忙碌,而婴儿在拨弄着平板自...

  • 网络啊网络

    下午,天突降大雨。 其时我正打开电脑在听音乐,声音戛然而止,我以为是网络卡住了,就照样一边忙碌着一边等待音乐声再次...

  • 网络-网络层

    网络层 网络层数据包(IP数据包,Packet)由首部、数据2部分组成数据:很多时候是由传输层传递下来的数据段(S...

  • 测试网络

    测试网络测试网络测试网络测试网络测试网络测试网络

  • 网络 和网络笔记

    ifconfig -a 查看物理网卡硬件地址 比如 ether 00:0c:29:ab:6e:72 更改M...

  • 【网络】集群网络排错

    前几天实验室网络抽风,卡的要死要死的,做实验也做的要死要死的(跟十几台小集群在一个屋里通宵,这种酸爽简直终身难忘)...

  • Android网络——网络状态

    1. 判断网络是否可用 2. 判断网络类型

网友评论

      本文标题:网络

      本文链接:https://www.haomeiwen.com/subject/omjdihtx.html