
网络编程
文章平均质量分 77
u010765526
这个作者很懒,什么都没留下…
展开
-
HTTP 401和403的区别
一句话:401 未认证响应-------是由于用户没有进行身份认证或者身份认证不对。403 拒绝响应----------是当用户通过了身份验证,但无权对给定资源执行请求的操作(比如没有读写权限)。引用书上的话来说明:There's a problem with 401 Unauthorized, the HTTP status code for authentication errors. And that’s just it: it’s for authentication, not.原创 2020-05-23 11:30:00 · 2175 阅读 · 1 评论 -
udp客户端使用bind的场景
无连接的socket的客户端和服务端以及面向连接socket的服务端通过调用bind函数来配置本地信息。使用bind函数时,通过将my_addr.sin_port置为0,函数会自动为你选择一个未占用的端口来使用。 Bind()函数在成功被调用时返回0;出现错误时返回"-1"并将errno置为相应的错误号。需要注意的是,在调用bind函数时一般不要将端口号置为小于1024的值,因为1到1024是...原创 2019-11-04 22:46:46 · 2077 阅读 · 0 评论 -
TCP 和 UDP 套接字缓冲区
1、MTU(Maximum Transmission Unit)最大传输单元,在数据链路层中,往往规定了MTU大小,IP层的数据包通过数据链路层如果大于MTU,将被分片,到达接收端IP层后再被重组。以太网的MTU为1500字节。2、MSS(Maximum Segment Size)最大报文段,是TCP协议的一个选项。MSS选项用于在TCP建立连接时,收发双方协商一个TCP报文段所能承载...原创 2019-11-02 22:22:34 · 818 阅读 · 0 评论 -
socket的sigpipe信号
对一个对端已经关闭的socket调用两次write,第一次将会收到队端的RST响应,第二次将会生成SIGPIPE信号, 该信号默认结束进程.具体的分析可以结合TCP的"四次握手"关闭. TCP是全双工的信道, 可以看作两条单工信道, TCP连接两端的两个端点各负责一条. 当对端调用close时, 虽然本意是关闭整个两条信道, 但本端只是收到FIN包. 按照TCP协议的语义, 表示对端只是关闭...原创 2019-09-08 23:00:36 · 286 阅读 · 0 评论 -
SO_ERROR 套接字选项
当一个套接字上发生错误时,内核协议中的协议模块将此套接字的名为so_error的变量设为标准的Unix Exxx值中的一个,我们称它为该套接字的待处理错误(pending error)。内核能够以下面两种方式之一立即通知进程这个错误。如果进程阻塞在对该套接字的select调用上,那么无论是检查可读条件还是可写条件,select均返回并设置其中一个或所有两个条件。 如果进程使用信号驱动式I...原创 2019-09-08 16:17:12 · 2616 阅读 · 0 评论 -
socket可读和可写的条件
一、下列四个条件中的任何一个满足时,socket准备好读:1,socket接收缓冲区中已经接收的数据的字节数大于等于socket接收缓冲区低潮限度的当前值;对这样的socket的读操作不会阻塞,并返回一个大于0的值(即:准备好读入的数据的字节数).我们可以用socket选项SO_RCVLOWAT来设置此低潮限度,对于TCP和UDPsocket,其缺省值为1;2,连接的读这一半关闭...原创 2019-09-08 11:29:26 · 1057 阅读 · 0 评论 -
wireshark中“tcp segment of a reassembled pdu”的解释
“TCP segment of a reassembled PDU”指TCP层收到上层大块报文后分解成段后发出去。于是有个疑问,TCP层完全可以把大段报文丢给IP层,让IP层完成分段,为什么要在TCP层分呢? 其实这个是由TCP的MSS(Maximum Segment Size,最大报文段长度)决定的,TCP在发起连接的第一个报文的TCP头里通过MSS这个可选项告知对方本端能够接收的最大报文(当然...原创 2019-08-11 23:09:26 · 4132 阅读 · 1 评论 -
三次握手的第三个ACK包丢了,会发生什么?
众所周知,TCP建立采用的是三次握手。最近在看论文的时候,突然想到,如果第三个ACK报文丢失了,TCP建立是否还会成功?TCP是如何处理的呢?三次握手的第三个ACK包丢了——客户端认为连接建立,写数据时,会触发RST 。当Client端收到Server的SYN+ACK应答后,其状态变为ESTABLISHED,并发送ACK包给Server;如果此时ACK在网...原创 2019-08-18 21:59:47 · 1724 阅读 · 1 评论 -
网络编程 accept
1,accept 从listen 监听队列中接受一个连接。#include <sys/types.h>#include <sys/socket.h>int accept(int socked, struct socked *addr, sickle_t *addrlen); sockfd参数是执行过listen 系统调用的监听s...原创 2019-08-04 18:54:40 · 1054 阅读 · 0 评论 -
网络编程 read 阻塞和非阻塞下的区别
1,read 原型,参数以及返回值。#include <uinstd.h>ssize_t read(int fd, void *buf, size_t nbytes);-----read,只是将内核中缓冲区的数据搬到用户进程空间。参数:fd:某个连接的套接字。buf:从内核缓冲区读入的数据放到用户缓冲区的地址。nbytes:希望读入的数据大小,一般不是真正...原创 2019-04-20 23:21:06 · 1980 阅读 · 0 评论 -
网络编程 write 阻塞和非阻塞下的区别
1,write原型,参数及返回值。#include <unistd.h>ssize_t write(int fd, const void *buf, size_t nbytes); ------函数write 只是将用户进程中的数据拷贝到内核缓冲区中,拷贝数据的大小取决于内核缓冲区的大小与nbytes。参数:fd:标示某个套接字;buf:进程中需要往对端...原创 2019-04-20 22:44:14 · 5899 阅读 · 2 评论 -
I/O复用----epoll
一、内核事件表 epoll是linux特有的I/0复用函数,它在实现和使用上与select、poll有很大差异。 首先,epoll使用一组函数来完成任务,而不是单个函数; 其次,epoll吧用户关心的文件描述符上的事件放在内核里的一个事件表中,从而无须像select和poll那样每次调用都要重复传入文件描述符集或事件集。但epoll需要一个额外的文件描述符,来唯一标示内核中的这个...原创 2018-05-06 16:13:44 · 163 阅读 · 0 评论 -
I/O复用----poll
一、poll系统调用 poll 和select类似,是在指定时间内轮询一定数量的文件描述符,以测试其中是否有就绪者。 poll的原型为:#include <poll.h>int poll(struct pollfd* fds, nfds_t nfds, int timeout); 返回值: 成功时,返回pollfd结构体中域revents不为0的文件描述描述符...原创 2018-05-06 14:52:50 · 159 阅读 · 0 评论 -
linux socket非阻塞之 send 和sendto函数
1,函数原型#include <sys/socket.h>ssize_t send(int sockfd, const void *buff, size_t nbytes, int flags);ssize_t sendto(int sock, const void *buf, size_t len, int flags, const struct sockaddr *to, s...原创 2018-04-09 23:06:13 · 5322 阅读 · 0 评论 -
linux socket非阻塞之connect 函数
1,connect原型#include<sys/socket.h>int connect (int sockfd, const struct sockaddr * servaddr, int addrlen);如果是TCP套接字,connect函数将激发TCP 的三路握手。阻塞模式下:(阻塞中) = 0 连接成功 = -1 出错(有ETIMEDOUT,超时;ECONNR...原创 2018-04-09 22:19:32 · 516 阅读 · 0 评论 -
socket设置为非阻塞模式
1,套接字的默认状态是阻塞的。即当发出一个不能立即完成的套接字调用时,该进程将被投入睡眠,等待相应操作完成。2,阻塞的套接字分为下面四类:输入操作:包括read、recv、recvfrom和recvmsg。输出操作:包括write、send、sendto和sendmsg。接受外来连接,accept 函数。发起外出连接,connect 函数。3,将一个socket 设置成非阻塞模式,使用fcntl...原创 2018-04-09 20:52:01 · 17613 阅读 · 1 评论