
tcp/ip
文章平均质量分 56
jinnlxl
nothing,nothing at all
展开
-
TCP的三路握手和四路挥手
TCP(Transmission Control Protocol,传输控制协议)是常用的传输层协议,与另外一种传输层协议UDP(User Datagram Protocol,用户数据传输协议)无需连理C/S链接不同,TCP协议时基于链接。那么这个连接的建立和断开机制是什么样的呢?一,三次握手1,server必须首先准备好接收外来的链接,要做哪些准备呢?即建立一个套接字,将套接原创 2015-01-27 23:16:50 · 1212 阅读 · 0 评论 -
SMTP 简单邮件传送协议
用TCP进行的邮件交换是由报文传送代理MTA完成的。最普通的Unix系统的MTA是Sendmail。两个MTA之间用NVT ASCII进行通信,客户向服务器发出命令,服务器用数字应答码和可选的人可读字符串进行响应。SMTP命令:HELOMAIL:RCPTDATAQUITRSETVRFYNOOPEXPNTURN原创 2015-03-21 21:05:37 · 938 阅读 · 0 评论 -
网络编程练习-ioctl
ioctl是一个非常重要的POSIX接口,可以执行非常多的操作。ioctl可以对文件,设备节点,套接字等多种资源进行操作,甚至在某些情况下可以作为一个数据传输接口(当然,需要驱动里给予支持)。其函数原型如下:#include int ioctl(int fd, int request, .../* void *arg*/);//第三个参数一般为一个指针,其类似依赖于第二个参数re原创 2015-03-30 18:48:50 · 737 阅读 · 0 评论 -
网络编程练习-路由套接字
路由套接字主要是为了操作内核中的路由子系统而创建,它提供以下功能:1,进程可以通过路由套接字读取内核信息,获取类似ICMP重定向等信息(需root权限)。2,进程可以通过路由套接字发送消息给内核,用来增加或者删除路径(需root权限)。3,进程可以通过sysctl倾泻路由表或列出所有已配置的接口。数据链路层套接字地址结构#include struct sockadd原创 2015-03-30 21:26:32 · 1434 阅读 · 0 评论 -
网络编程练习-unix域套接字
unix域协议并不是一个实际的协议族,而是一种用在单个主机中进程间通信的方式。unix域提供两类套接字:字节流套接字(类似TCP)和数据报套接字(类似UDP)。除了用于常用的进程间通信,还可用于在在不同进程中间传递描述符。unix域套接字也可以将客户的凭证(用户ID和组ID)提供给服务器,从而能够提供额外的安全检查措施。 /*****************************原创 2015-03-27 15:23:36 · 522 阅读 · 0 评论 -
网络编程联系-高级I/O
除了read/write函数之外,POSIX还为socket提供了其他的I/O接口。1,recv&send函数原型:#include ssize_t recv(int sockfd, void* buf, size_t nbytes, int flags);ssize_t send(int sockfd, const void *buf, size_t nbytes, int f原创 2015-03-29 22:00:55 · 523 阅读 · 0 评论 -
网络编程练习-广播和多播
广播的用途:1,资源发现,在本地子网中定位一个服务器主机。2,在有多个客户与单个服务器通信的局域网环境中尽量减少分组流通。广播地址:1,多播支持在IPv4中是可选的,在IPv6中是必需的。2,IPv6不支持广播,使用广播的IPv4应用程序一旦移植到IPv6就必须要用多播重写。3,广播和多播要求用于UDP或原始IP,他们不能用于TCP。原创 2015-03-29 23:15:42 · 635 阅读 · 0 评论 -
ARP地址解析协议与RAPR逆地址解析协议
ARP地址解析协议与RAPR逆地址解析协议原创 2015-03-15 17:36:05 · 4887 阅读 · 0 评论 -
数据链路层和网络层
IP路由选择原创 2015-03-13 16:31:13 · 2655 阅读 · 0 评论 -
网络编程练习-RAW套接字
RAW套接字能提供TCP和UDP所不能提供的以下三个功能:1,读写ICMP和IGMP分组,如果ping程序和多播路由守护程序mrouted就是使用raw套接字。2,读写内核不处理其协议字段的IPv4数据报。3,自行构造IPv4首部。原创 2015-04-10 17:17:10 · 823 阅读 · 0 评论 -
网络编程练习-key套接字
密钥管理套接字支持三种类型的操作:1,应用进程可以通过key套接字往内核以及其他打开着密钥套接字的所有其他进程发送消息2,应用进程可以通过key套接字从内核或其他进程接收消息。3,通过发送dump请求使内核dump出当前的SADB(security policy database)。原创 2015-04-07 13:43:35 · 569 阅读 · 0 评论 -
网络编程练习-TCP socket
Server端:#include #include #include #include int main(int argc, char* argv[]){ int sockfd = socket(AF_INET, SOCK_STREAM, 0); if(!sockfd){ fprintf(stderr, "socket creat error. \n"); return原创 2015-03-25 17:13:57 · 637 阅读 · 0 评论 -
当你在浏览器地址栏输入一个URL后回车,将会发生的事情?
转自:http://www.cnblogs.com/panxueji/archive/2013/05/12/3073924.html作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:像浏览器,HTTP,HTML,网络服务器,需求处理等等。本文将更深入的研究当你输入一个网址的时候,后台到底发生了一件件什么样的事~转载 2015-04-24 13:56:07 · 3559 阅读 · 0 评论 -
FTP 文件传输协议
FTP是用于文件传输的internet标准。FTP采用两个TCP连接来传输一个文件:1,控制连接以通常的客户服务器方式建立,服务器被动打开21号端口,客户主动打开21端口,并于服务器的21号端口建立连接。2,每启动一个文件的传输,就创建一个新的数据连接。其传输模型如下图:FTP提供了控制文件传输和存储的多种选择,在以下四个方面中的每一个都必须做出一个选择:每原创 2015-03-21 20:35:10 · 985 阅读 · 0 评论 -
TCP的超时和重传
TCP提供可靠的运输层。其主要途径就是确认从另一端收到的数据。同时确认也需要传输,故而也存在丢掉的可能。TCP通过在发送时设置一个定时器来解决这种问题:如果定时器溢出还没有收到确认,重传该数据。对于每个连接,TCP管理4个不同的定时器。1,重传定时器用于希望收到对端的确认。2,persist定时器使窗口大小信息保持不断流动,即使另一端关闭了其接受窗口。3,keepalive原创 2015-03-20 16:53:04 · 717 阅读 · 0 评论 -
TCP状态转换图及TIME_WAIT状态
关于上图中的状态,解释如下:CLOSED:无连接是活动的或正在进行 LISTEN:服务器在等待进入呼叫 SYN_RECV:一个连接请求已经到达,等待确认 SYN_SENT:应用已经开始,打开一个连接 ESTABLISHED:正常数据传输状态 FIN_WAIT1:应用说它已经完成 FIN_WAIT2:另一边已同意释放 ITMED_WAIT:等待所有分组死掉 C原创 2015-01-27 23:24:43 · 744 阅读 · 0 评论 -
ICMP:Internet控制报文协议
ICMP传递差错报文以及其他需要注意的信息,通常被IP层或传输层使用。ICMP报文格式如下:所有ICMP报文的前4个字节是一样的,其他互不相同。类型字段可以有15个不同的值,以描述特定类型的ICMP报文。某些ICP报文还使用代码字段的值来进一步描述不同的条件。ICMP地址掩码请求用于误判系统在引导过程中获取自己的子网掩码。原创 2015-03-15 14:53:52 · 800 阅读 · 0 评论 -
UDP:用户数据报协议
UDP是一个简单的面向数据报的传输层协议,进程的每个输出操作都正好产生一个UDP数据报,并组装一份待发送的IP数据报。与TCP不同,app产生的全体数据与真正发送的单个IP数据报没什么关系。UDP不提供可靠性:只发送数据,并没有保证措施确保他们能到达目的地。UDP封装结构如下:UDP首部共八个字节,分为4个16bit的字段,分别表示源端口号,目的端口号,UDP长度(最小8b原创 2015-03-16 16:59:57 · 849 阅读 · 0 评论 -
网络编程练习-setsockopt&getsockopt
能设置和获取套接字选项的主要有以下几类函数:原创 2015-03-25 23:30:59 · 2007 阅读 · 0 评论 -
网络编程练习-名字与地址转换
主机名字与IP地址之间的映射由DNS(域名系统,Domain Name System)完成。DNS中的条目称为资源记录(resource record, RR),其中包括以下字段A 记录一个主机名映射的32位IPv4地址。AAAA 记录一个主机名映射的128位IPv6地址。PTR 把IP地址映射成主机名。原创 2015-03-26 21:34:41 · 699 阅读 · 0 评论 -
TCP 传输控制协议
与UDP不同,TCP提供面对连接的,可靠的字节流服务。TCP协议通过以下方式来提供可靠性:1,应用数据被分割成TCP因为最合适发送的数据块,由TCP传递给IP的信息单位称为报文段或段(segment)。2,当TCP发出一个段之后,它启动一个timer并等待,如果确认回收超时,将重发此报文段。3,一端收到另一端的数据,它将发送一个确认,并不立即发送,通常推迟几分之一秒。4,TCP原创 2015-03-17 19:56:00 · 634 阅读 · 0 评论 -
网络编程练习-fcntl
函数原型(linux man page):fd:套接字文件描述符(用于操作套接字时,可以用于操作其他文件)cmd:对于每一个套接字描述符,都有一个组F_GETFL&F_SETFL的cmd。后面的可变参数为具体设置值。对于socket,fcntl可以设置IO方式(是否阻塞,信号驱动式IO),设置&获取套接字属主(套接字的进程组ID)。当然,另外一个posix接口ioctl原创 2015-03-26 17:09:29 · 506 阅读 · 0 评论 -
TCP的交互数据流与成块数据流
TCP的交互数据流与成块数据流原创 2015-03-20 16:53:20 · 562 阅读 · 0 评论 -
TFTP 简单文件传输协议
TFTP基于UDP,通常用于引导无盘系统。TFTP报文的头两个字节表示操作码,依据此操作码(从1到5),TFTP有五种不同的报文格式,格式如下:1,如果是读请求或者写请求,文件名字段说明客户要读或写的位于服务器的上的文件并以0字节作为结束,模式字段是一个ASCII码串netascii或octet,同样以0字节结束。netascii表示数据是以成行的ASCII码字符组成,以C原创 2015-03-17 14:41:17 · 2681 阅读 · 0 评论 -
广播和多播
广播和多播将报文同时将报文传往多个接受者,所以无法适用于基于连接的协议(TCP),只能应用于UDP。原创 2015-03-17 10:46:09 · 452 阅读 · 0 评论 -
DNS 域名系统
DNS是一种用于TCP/IP应用程序的分布式数据库,它提供主机名字和IP地址之间的转换及有关电子邮件的选路信息。对DNS的访问是通过一个地址解析器来完成的,在*nix主机中,主要通过两个库函数gethostbyname和gethostbyaddr来访问。DNS的名字空间与*nix文件系统类似,也具有层次结构,其结构如下图:每个节点有一个至多63个字符长得标示,根是没有任何标示的原创 2015-03-17 13:36:10 · 694 阅读 · 0 评论 -
SNMP 简单网络管理协议
基于TCP/IP的网络管理主要为两个部分:1,网络管理站(manager),显示所有被管理设备的状态,也称管理进程。2,被管理设备(agent):包括路由器,终端机,打印机等,也称代理进程。二者之间的通信可以有两种方式:1,管理进程向代理进程发出请求,查询或者修改一个具体的参数值。2,代理进程主动向管理进程上传发送的重要事件,以便于管理进程修改代理进程的相关参数。原创 2015-03-21 17:24:21 · 789 阅读 · 0 评论 -
网络编程练习-UDP套接字
网络编程练习原创 2015-03-26 20:29:06 · 543 阅读 · 0 评论