疫情在家复习一下网络编程(含面试点标记)

Posted JAVA后端技术之路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了疫情在家复习一下网络编程(含面试点标记)相关的知识,希望对你有一定的参考价值。

推荐网络编程书籍

OSI七层协议(面试点)

  • 应用层(HTTP 无状态单向性短连接):为应用程序提供服务

  • 表示层:数据格式转化数据加密

  • 会话层:建立管理和维护会话

  • 传输层:建立和管理端对端连接TCP、UDP

  • 网络层:IP选址及路由器选址IP、ICMP、RIP、OSPF

  • 链路层:提供介质访问

  • 物理层:物理传输

  • 疫情在家复习一下网络编程(含面试点标记)



    TCP(传输层)


    疫情在家复习一下网络编程(含面试点标记)



    疫情在家复习一下网络编程(含面试点标记)


    协议:

    TCP 面向连接的、可靠的流协议

    UDP 面向无连接的通讯协议

    ICMP 控制报文协议

    IGMP internet组管理协议


    TCP 提供了一种可靠的数据传输服务,TCP是面向连接的,也就是说,利用 TCP 通信的两台主机首先要经历一个建立连接的过程,等到连接建立后才开始传输数据,而且传输过程中采用“带重传的肯定确认”技术来实现传输的可靠性。TCP 还采用一种称为“滑动窗口”的方式进行流量控制,发送完成后还会关闭连接。所以 TCP 要比 UDP 可靠的多。

    TCP三次握手:(面试点)

  • 第一次握手:客户请求建立连接

  • 第二次握手:服务端应答客户端,请求建立连接 (存入半连接队列里面)

  • 第三次握手:客户端针对服务端请求确认



  • SYN洪泛攻击:

    原理:

    解决方案:

    • 无效链接监控释放

    • 延缓TCB分配方法

    • 防火墙

    TCP四次挥手:

    定义:断开一个TCP连接需要客户端和服务端总共发送4个以确认连接断开。

    为什么需要四次挥手:TCP是双全工(客户端与服务端可以相互发送和接收请求),所以需要双方确认关闭。

    过程:

    • 第一次挥手:客户端发送关闭请求

    • 第二次挥手:服务端响应客户端关闭请求

    • 第三次挥手:服务端发送关闭请求

    • 第四次挥手:客户端发送关闭请求确认


    一次完整HTTP请求过程(面试点):

    • 三次握手建立TCP连接

    • 客户端向服务端发送请求命令

    • 客户端发送请求头信息

    • 服务服务器应答器 Http/1.1 200 ok

    • 返回响应头信息

    • 服务器向客户端发送数据

    • 服务器关闭TCP连接,四次挥手

    UDP(传输层)

    概述:

    • 面向无连接的通讯协议

    • 通讯时不需要接收方确认,属于不可靠传输。

    • 因为不需要建立连接,所以传输速度快,但是容易丢失数据。

    报文组成:

    • 源端口

    • 目的端口

    • 长度

    • 校验和

    网络编程常见术语

    编程中的Socket:socket是应用层与TCP/IP协议簇通信的中间软件抽象层,是一组接口。

    短连接:

    • 连接->传输数据->关闭连接

    • 比如HTTP是无状态的的短链接,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。因为连接后接收了数据就断开了,所以每次数据接受处理不会有联系。这也是HTTP协议无状态的原因之一。

    • 像WEB网站的http服务一般都用短链接,因为长连接对于服务端来说会耗费一定的资源,而像WEB网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一些资源,如果用长连接,而且同时有成千上万的用户,如果每个用户都占用一个连接的话,那可想而知吧。所以并发量大,但每个用户无需频繁操作情况下需用短连好。

    长连接:

    • 连接->传输数据->保持连接 -> 传输数据-> ...........->直到一方关闭连接,多是客户端关闭连接。

    • 长连接指建立SOCKET连接后不管是否使用都保持连接,但安全性较差。

    • 长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况,。每个TCP连接都需要三步握手,这需要时间,如果每个操作都是先连接,再操作的话那么处理速度会降低很多,所以每个操作完后都不断开,次处理时直接发送数据包就OK了,不用建立TCP连接。例如:数据库的连接用长连接, 如果用短连接频繁的通信会造成socket错误,而且频繁的socket 创建也是对资源的浪费。


以上是关于疫情在家复习一下网络编程(含面试点标记)的主要内容,如果未能解决你的问题,请参考以下文章

疯狂复习20天卷土从来

疫情在家没事做推荐个学习的目录:怎么从一名码农成为架构师的必看知识点:目录大全(不定期更新)

疫情宅在家,研究一下fastjson中字段智能匹配的原理

疫情宅在家,研究一下fastjson中字段智能匹配的原理

疫情宅在家,研究一下fastjson中字段智能匹配的原理

疫情宅在家,研究一下fastjson中字段智能匹配的原理