计算机网络
文章平均质量分 62
参考书籍《计算机网络》(谢希仁编著)、《计算机网络自顶向下》对知识进行总结整理。
孟小胖_H
本人博客大部分都是在复习中整理的,主要用于记录笔记,其中也记录了一些个人观点和思考,欢迎指点,一起共同学习进步。
展开
-
计算机网络——HTTP协议和Web
文章目录一.基本知识二.非持续连接与持续链接1.采用持续连接的HTTP2.采用非持续连接的HTTP三.HTTP报文格式1.请求报文2.应答报文五.cookie六.Web缓存1.基本概念2.缓存器的作用3.条件Get4.Web缓存器效率分析查看优秀博客HTTPS协议的介绍及与HTTP协议的区别声明:本篇博客参考了书籍《计算机网络自顶向下》和部分优秀博客一.基本知识(1)Web(World Wide Web的缩写),意味全球广域网,也称为万维网,是一种全球性的、动态交互的、跨平台的分布式图形信息系..原创 2021-11-14 18:51:27 · 3256 阅读 · 0 评论 -
I/O复用函数的使用——epoll
1.epoll的接口介绍epoll 是 Linux 特有的 I/O 复用函数。它在实现和使用上与 select、poll 有很大差异。首先,epoll 使用一组函数来完成任务,而不是单个函数。其次,epoll 把用户关心的文件描述符上的事件放在内核里的一个事件表中,从而无需像 select 和 poll 那样每次调用都要重复传入文件描述符或事件集。但 epoll 需要使用一个额外的文件描述符,来唯一标识内核中的这个事件表。epoll 相关的函数如下:◼ epoll_create()用于创建内核事件表◼原创 2021-09-27 23:27:17 · 123 阅读 · 0 评论 -
I/O复用函数的使用——poll
1.poll 的接口介绍poll 系统调用和 select 类似,也是在指定时间内轮询一定数量的文件描述符,以测试其中是否有就绪者。poll 的原型如下:#include <poll.h>int poll( struct pollfd *fds, nfds_t nfds, int timeout);/*poll 系统调用成功返回就绪文件描述符的总数,超时返回 0,失败返回-1nfds 参数指定被监听事件集合 fds 的大小。timeout 参数指定 poll 的超时值,单位是毫秒原创 2021-09-26 15:07:29 · 149 阅读 · 0 评论 -
I/O复用函数的使用——select
I/O 复用使得程序能同时监听多个文件描述符,这对于提高程序的性能至关重要。通常,网络程序在下列情况下需要使用 I/O 复用技术:◼ TCP 服务器同时要处理监听套接字和连接套接字。◼ 服务器要同时处理 TCP 请求和 UDP 请求。◼ 程序要同时处理多个套接字。◼ 客户端程序要同时处理用户输入和网络连接。◼ 服务器要同时监听多个端口。需要指出的是,I/O 复用虽然能同时监听多个文件描述符,但它本身是阻塞的。并且当多个文件描述符同时就绪时,如果不采取额外的措施,程序就只能按顺序依处理其中的每一个原创 2021-09-25 19:35:39 · 158 阅读 · 0 评论 -
socket网络编程——UDP编程流程
UDP 提供的是无连接、不可靠的、数据报服务。编程流程如下:socket()方法用来创建套接字,使用udp协议时,选择数据报服务SOCK_DGRAM。sendto()方法用来发送数据,由于 UDP 是无连接的,每次发送数据都需要指定对端的地址(IP 和端口)。recvfrom()方法接收数据,每次都需要传给该方法一个地址结构来存放发送端的地址。recvfrom()方法可以接收所有客户端发送给当前应用程序的数据,并不是只能接收某一个客户端的数据。UDP服务端代码:#include<stdi原创 2021-09-25 12:02:13 · 1374 阅读 · 0 评论 -
socket网络编程——多进程、多线程处理并发
1.服务器处理并发的必要性如下图所示, 当一个客户端与服务器建立连接以后,服务器端 accept()返回,进而准备循环接收客户端发过来的数据。如果客户端暂时没发数据,服务端会在 recv()处阻塞。此时,其他客户端向服务器发起连接后,由于服务器阻塞了,无法执行 accept()接受连接,也就是其他客户端发送的数据,服务器无法读取。服务器也就无法并发同时处理多个客户端。这个问题可以通过引入多线程和多进程来解决。服务端接受一个客户端的连接后,创建一个线程或者进程,然后在新创建的线程或进程中循环处理数据。主原创 2021-09-25 11:21:39 · 3706 阅读 · 0 评论 -
socket网络编程——TCP编程流程及端口号占用问题
1.TCP编程流程1.1TCP服务器端客户端及方法介绍TCP 提供的是面向连接的、可靠的、字节流服务。TCP 的服务器端和客户端编程流程如下:socket()方法是用来创建一个套接字,有了套接字就可以通过网络进行数据的收发。这也是为什么进行网络通信的程序首先要创建一个套接字。创建套接字时要指定使用的服务类型,使用 TCP 协议选择流式服务(SOCK_STREAM)。bind()方法是用来指定套接字使用的 IP 地址和端口。IP 地址就是自己主机的地址,如果主机没有接入网络,测试程序时可以使用回环地原创 2021-09-25 09:00:27 · 2438 阅读 · 3 评论 -
socket网络编程——网络编程接口
网络编程接口#include <sys/types.h>#include <sys/socket.h>/*socket()创建套接字,成功返回套接字的文件描述符,失败返回-1domain: 设置套接字的协议簇, AF_UNIX AF_INET AF_INET6type: 设置套接字的服务类型 SOCK_STREAM SOCK_DGRAMprotocol: 一般设置为 0,表示使用默认协议*/int socket( int domain, int type, int原创 2021-09-24 21:35:24 · 228 阅读 · 0 评论 -
socket网络编程——套接字地址结构
声明:此博客是本人根据老师课件总结的,如有抄袭行为,本人会即刻删除。1.主机字节序列和网络字节序列主机字节序列分为大端字节序和小端字节序,不同的主机采用的字节序列可能不同。大端字节序是指一个整数的高位字节存储在内存的低地址处,低位字节存储在内存的高地址处。小端字节序则是指整数的高位字节存储在内存的高地址处,而低位字节则存储在内存的低地址处。在两台使用不同字节序的主机之间传递数据时,可能会出现冲突。所以,在将数据发送到网络时规定整形数据使用大端字节序,所以也把大端字节序成为网络字节序列。对方接收到数据后,原创 2021-09-24 21:22:00 · 282 阅读 · 0 评论