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

破局之路课程 2024-03-26 04:00:07

推荐网络编程书籍

OSI七层协议(面试点)应用层(HTTP 无状态单向性短连接):为应用程序提供服务表示层:数据格式转化数据加密会话层:建立管理和维护会话传输层:建立和管理端对端连接TCP、UDP网络层:IP选址及路由器选址IP、ICMP、RIP、OSPF链路层:提供介质访问物理层:物理传输

TCP(传输层)

协议:

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

UDP 面向无连接的通讯协议

IP 在源地址和目的地址之间传送的数据包

ICMP 控制报文协议

IGMP internet组管理协议

ARP 地址解析协议

RARP 反向地址转化协议

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

TCP三次握手:(面试点)

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

SYN洪泛攻击:

通过网络服务所在端口发送大量伪造原始地址的攻击报文,发送到服务端,造成服务端上的半开连接队列被占满,从而阻塞其他访问请求。

原理:

攻击者客户端利用伪造的IP地址向服务端发出请求(第一次握手),而服务端的响应(第二次握手)的报文将永远发送不到真实的客户端,服务端在等待客户端的第三次握手(永远都不会有的),服务端在等待这种半开的连接过程中消耗了资源,如果有成千上万的这种连接,主机资源将被耗尽,从而达到攻击的目的。

解决方案:

无效链接监控释放延缓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 创建也是对资源的浪费。

【关注我,每日推送!】

0 阅读:0

破局之路课程

简介:感谢大家的关注