TCPIP详解 卷2
alenliu0621
随风飘飘天地任逍遥~~~
展开
-
《TCP/IP详解 卷2》 笔记: read和write系统调用
read系统调用我们再熟悉不过了,下面列出与read系统调用相关的读系统调用:#include <unistd.h>ssize_t read(int fd, void *buf, size_t count);#include <sys/uio.h>ssize_t readv(int fd, const struct iovec *iov, int iovcnt);...原创 2018-03-16 14:40:26 · 2178 阅读 · 0 评论 -
《TCP/IP详解 卷2》 笔记:TCP的输入函数:tcp_input
TCP输入处理是系统中最长的一部分代码,tcp_input函数约有1100行代码(预警!)。它完全遵循RFC793中定义的输入事件处理步骤,这些步骤详细定义了如何根据连接的当前状态,处理不同的输入报文段。当发现分组IP首部中的协议字段是TCP协议时,IP协议的软中断处理函数ipintr调用tcp_input函数进行处理。tcp_input函数我删去了处理URG标志的流程,它的代码如下:/* * ...原创 2018-03-21 17:15:06 · 3631 阅读 · 0 评论 -
《TCP/IP详解 卷2》 笔记:TCP的输出函数:tcp_output
tcp_output函数负责发送TCP报文段,代码中有很多地方都调用了它。 tcp_usrreq函数在多种请求处理中调用了它:处理PRU_CONNECT,发送初始SYN;处理PRU_SHUTDOWN,发送FIN;处理PRU_RCVD,应用进程从socket接收缓冲区中读取若干数据后可能需要发送新的窗口大小通告;处理PRU_SEND,发送数据;处理PRU_SENDOOB,发送带外数据。 ...原创 2018-03-20 14:51:12 · 4978 阅读 · 0 评论 -
《TCP/IP详解 卷2》 笔记: connect系统调用
connect系统调用为socket建立一个TCP连接。/* * The connect() system call connects the socket referred to by the file descriptor sockfd to * the address specified by addr. The addrlen argument specifies the ...原创 2018-03-13 15:25:35 · 1174 阅读 · 0 评论 -
《TCP/IP详解 卷2》 笔记: bind、listen和accept系统调用
bind系统调用为socket绑定本地地址和本地端口号。/* * When a socket is created with socket(2), it exists in a name space (address family) but has no address * assigned to it. bind()assigns the address specified by...原创 2018-03-12 17:51:04 · 2748 阅读 · 0 评论 -
《TCP/IP详解 卷2》 笔记: socket系统调用
socket系统调用,用来创建一个套接字(后文我都称socket),若成功返回它的描述符。/*socket() creates an endpoint for communication and returns a descriptor.*/int socket(int domain, int type, int protocol);对于使用TCP协议的应用,我们常用 socket(AF_IN...原创 2018-03-11 21:57:41 · 1835 阅读 · 0 评论 -
《TCP/IP详解 卷2》 笔记: mbuf结构体
在BSD TCP/IP协议栈代码设计中的一个基本概念就是存储器缓存,称作一个mbuf,用于存储各种信息。mbuf的主要用途是保存在进程和网络接口间互相传递的用户数据。但mbuf也用于保存其他各种数据:源与目标地址、插口选项等等。mbuf相当于Linux内核中的skb。/* header at beginning of each mbuf: */struct m_hdr { struct mbu...原创 2018-03-11 16:25:53 · 2772 阅读 · 3 评论 -
《TCP/IP详解 卷2》 笔记: 简介
《TCP/IP详解 卷2》讲述的是4.4BSD-Lite(1994年发布的一个BSD操作系统的发行版)的TCP/IP协议栈源代码,之后许多Unix和非Unix(包括Linux)操作系统的网络协议栈的实现都参考了它。 这本书将近900页,讲述了约15000行的代码。这是我第二次阅读如此大篇幅的源代码讲解的书,前前后后,断断续续地花了几个月的时间。我并不是所有的内容都阅读过了,我只关注...原创 2018-03-11 14:54:56 · 7568 阅读 · 4 评论 -
《TCP/IP详解 卷2》 笔记: shutdown和close系统调用
shutdown系统调用关闭socket的读通道、写通道或读写通道(由how参数决定,how参数是FREAD和FWRITE的组合)。对于读通道,shutdown丢弃所有进程还没有读走的数据以及调用shutdown之后到达的数据。对于写通道,shutdown使协议作相应的处理。对于TCP,所有剩余的数据将被发送,发送完成后发送FIN。这就是TCP的半关闭特点。shutdown系统调用的代码如下:in...原创 2018-03-17 21:56:18 · 1411 阅读 · 2 评论 -
《TCP/IP详解 卷2》 笔记:TCP的定时器
TCP为每条连接建立了七个定时器。按照它们在一条连接生存期内出现的次序,简要介绍如下。 1. “连接建立(connection establishment)”定时器在发送SYN报文段建立一条新连接时启动。如果没有在75秒内收到响应,连接建立将中止。 2. “重传(retransmission)”定时器在TCP发送数据时设定。如果定时器已超时而对端的确认还未到达,TCP将重传数据。重传定...原创 2018-03-22 11:51:37 · 1973 阅读 · 0 评论