![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
计算机网络
维欣~
这个作者很懒,什么都没留下…
展开
-
【Linux】I/O复用之select的用法
I/O复用概念一个单进程、单线程的服务器程序同时监听多个文件描述符上是否有关注的事件发生,如果某些文件描述符上有事件发生,则程序接着处理有事件发生的文件描述符,没有事件发生的文件描述符则不予理会。这样就可以极大的提高程序的性能。1、I/O复用使得程序能同时监听多个文件描述符,这对于提高程序的性能至关重要。2、通常,网络程序在下列情况下需要使用1/O复用技术(1)TCP服务器同时要处理监听套接字和连接套接字。(2)服务器要同时处理TCP请求和UDP请求。(3)程序要同时处理多个套接字。(4)客户原创 2020-06-27 21:43:35 · 154 阅读 · 0 评论 -
【计算机网络】HTTP协议和web服务器
1、浏览器与web服务器在应用层通信使用的是http协议(超文本传输协议),而http协议在传输层使用的是tcp协议。2、浏览器向服务器发起连接前,需要得到服务器的IP及端口。用户在浏览器中通常只输入网址(网站域名),浏览器会通过DNS服务查询获取到服务器的IP地址。对于端口来讲,使用http 协议的程序一般默认使用 80端口。面试题:如果在浏览器上输入网址,之后会发生什么?3、浏览器服务器建立连接后,如果两次以上的请求复用同一个tcp连接,则称之为长连接。如果浏览器发送一次请求报文,服务器回复原创 2020-06-27 13:33:27 · 1024 阅读 · 0 评论 -
【计算机网络】IP协议及其头部详解
IP协议基础1、IP协议是网络层协议,网络层协议负责数据的选路和转发2、IP协议特点:无连接、无状态、不可靠每一台网络设备(路由器)只是实现尽力转发,只负责将收到的数据转发出去。至于能够到达目的地,每一台路由器都不负责。(1)无连接是指IP通信双方都不长久地维持对方的任何信息。这样,上层协议每次发送数据的时候,都必须明确指定对方的IP地址。(2)无状态是指IP通信双方不同步传输数据的状态信息,因此所有IP数据报的发送、传输和接收都是相互独立、没有上下文关系的。网络层的IP协议并不能保证数据到达原创 2020-06-26 19:39:51 · 1668 阅读 · 0 评论 -
【计算机网络】拥塞控制算法
拥塞窗口cwnd发送方维持一个叫做拥塞窗口cwnd (congestion window)的状态变量。拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变化。发送方让自己的发送窗口等于拥塞窗口。(如果再考虑到接收方的接收能力,那么发送窗口还可能小于拥塞窗口。)发送方控制拥塞窗口的原则是:只要网络没有出现拥塞,拥塞窗口就再增大一些,以便把更多的分组发送出去。但只要网络出现拥塞,拥塞窗口就减小一些,以减少注入到网络中的分组数。只要发送方没有按时收到应当到达的确认报文,就可以猜想网络可能出现了拥塞拥塞原创 2020-06-26 13:08:34 · 1718 阅读 · 0 评论 -
【计算机网络】零窗口、糊涂窗口以及Nagle算法
滑动窗口发送方发送数据速率与接收方接收数据速率相匹配。零窗口问题定义TCP报头结构中有1 6位的窗口大小:由接收方填充, 用来告知发送方当前本端还能接收的数据长度。如果接收方不断从网络中接收并缓存数据,但是应用程序并没有处理缓存的数据。直到最后,接收方就会向发送方发送一个0窗口的报文段。如何处理?持续计时器 +零窗口探测报文段为了解决这个问题,TCP为每一个连接设有一个持续计时器(persistence timer)。只要TCP连接的一方收到对方的零窗口通知,就启动持续计时器。若持续计时器设原创 2020-06-26 12:11:06 · 1900 阅读 · 0 评论 -
【计算机网络】TCP的报文头部
怎样保证TCP的可靠性?(1)保证数据能够到达对方(2)保证数据不重复、不乱序应答确认、超时重传滑动窗口:发送方发送数据,接收方速率匹配拥塞控制算法:发送方发送数据的速率,与当前网络情况的匹配(3)保证数据不失真16位校验和,冗余检验、TCP头部和数据部分TCP的报文头部1、序号(seq):在一个TCP连接中传送的每一个字节流中的每一个字节都按顺序编号。序号值由系统初始化的某一个随机值ISN和本报文段第一个字节数据在整个字节流中的偏移量组成。2、确认号(ack):用作对另一方发送的tc原创 2020-06-25 16:23:00 · 708 阅读 · 0 评论 -
【面试题】TCP的建立和断开连接(三次握手和四次挥手)相关考点
TCP建立连接的三次握手客户端①[CLOSED -> SYN_SENT] 客户端调用connect, 发送同步报文段;③[SYN_SENT -> ESTABLISHED] 接收到服务器端发送的SYN报文,并向服务器端发送SYN确认报文。此时connect调用成功, 则进入ESTABLISHED状态, 开始读写数据;服务器端①[CLOSED -> LISTEN] 服务器端调用listen后进入LISTEN(监听)状态, 等待客户端连接;②[LISTEN -> SYN原创 2020-06-22 17:35:18 · 316 阅读 · 0 评论 -
【计算机网络】UDP协议的完整代码
头文件#include <stdio.h>#include <stdlib.h>#include <assert.h>#include <unistd.h>#include <string.h>#include <sys/socket.h>#include <sys/types.h>#include <arpa/inet.h>#include <netinet/in.h>服务器原创 2020-06-21 18:50:42 · 781 阅读 · 0 评论 -
【计算机网络】UDP协议的编程流程
1、UDP相比于TCP是无连接的,所以在进行服务器与客户端的建立时是不需要建立连接的。2、服务器流程(被动)及函数调用(1)int socket();创建一个用于监听客户端连接的网络套接字(2)int bind();将创建的套接字与本段的地址信息进行绑定。(3)int recvfrom();接收任意一个客户端的数据原型ssize_t recvfrom(int sockfd,void *buf,size_t len,unsigned int flags, struct socka原创 2020-06-21 17:58:14 · 428 阅读 · 0 评论 -
【计算机网络】TCP协议编程流程
一、传输层协议TCP协议:面向连接的、可靠的、字节流服务UDP协议:无连接的、不可靠的、数据报服务二、TCP协议的编程流程(一)服务器系统调用用法1、int socket();创建一个用于监听客户端连接的网络套接字原型:int socket(int domain,int type,int protocol)返回值:成功时返回一个socket文件描述符,失败则返回-1并设置errno。domain参数表示告诉系统使用哪个底层协议族。我们现在一般还使用IPV4,所以协议簇使用 AF_原创 2020-06-02 18:06:12 · 596 阅读 · 0 评论 -
【计算机网络】计算机网络协议、分层及数据传输的过程
1、网络的概念网络是由若干个节点和连接这些节点的链路组成,网络中的节点包括计算机交换机,路由器等设备。简而言之,网络是通过设备和线路将计算机互联起来2、互联网互联网是将不同的网络互联起来。3、网络设备串联各网络或者各主机的节点:路由器和交换机。网络的线路:网线(双绞线)、同轴电缆、光纤4、IP地址和MAC地址(1)IP 地址①主机的逻辑地址Ip地址就是给因特网上的每一个主机(或路由器)的每一个接口分配的一个在全世界范围内唯一的标识符。②IP地址的结构便于寻址。(2)IP地址分原创 2020-06-01 19:55:07 · 1185 阅读 · 0 评论