TCP/IP
hanchaoman
这个作者很懒,什么都没留下…
展开
-
LWIP通信协议UDP发送、接收源码解析
1.UDP发送函数比较简短,带操作系统和裸机一样。以下是udp_sendto源码解析;2.1.UDP带操作系统接收数据,以下是源码解析;2.2.UDP裸机接收数据,以下是源码解析。2.LWIP源码UDP接收数据。原创 2024-11-05 15:13:56 · 455 阅读 · 1 评论 -
实时传输协议RTP
1.RTP协议:RTP( Real-time Transport Protocol)协议最初是在70年代为了尝试传输声音文件,把包分成几部分用来传输语音,时间标志和队列号。经过一系列发展,RTP第一版本在1991年8月由美国的一个实验室发布了。到本世纪1996年形成了标准的的原创 2011-08-17 10:29:51 · 2276 阅读 · 0 评论 -
UDP数据包大小的问题
在进行UDP编程的时候,我们最容易想到的问题就是,一次发送多少bytes好?当然,这个没有唯一答案,相对于不同的系统,不同的要求,其得到的答案是不一样的,这里仅对像ICQ一类的发送聊天消息的情况作分析,对于其他情况,或许也能得到一点帮助: 首先,我们知道,TCP/IP转载 2011-09-21 23:30:24 · 1330 阅读 · 0 评论 -
子网掩码和网关的关系
子网掩码有数百种,这里只介绍最常用的两种子网掩码,它们分别是“255.255.255.0”和“255.255.0.0”。 1.子网掩码是“255.255.255.0”的网络:最后面一个数字可以在0~255范围内任意变化,因此可以提供256个IP地址。但是实际可用的IP地址数量是256-2,即254个,因为主机号不能全是“0”或全是“1”。 2.子网掩码是“255.255.0原创 2012-02-25 16:00:40 · 23383 阅读 · 1 评论 -
ntohs和htons区别?
一直以来都对这个两个函数含含糊糊的,今天又用到所以特意查看linux的源代码(/include/netinet/in.h)# if __BYTE_ORDER == __BIG_ENDIAN/* The host byte order is the same as network byte order, so these functions are all just identity原创 2012-09-26 20:19:17 · 6034 阅读 · 0 评论 -
tcp/ip协议各个层作用
从协议分层模型方面来讲,TCP/IP由四个层次组成:数据链路层、网络层、传输层、应用层一、数据链路层数据链路层是负责接收IP数据报并通过网络发送之,或者从网络上接收物理帧,抽出IP数据报,交给IP层。 传输有地址的帧以及错误检测功能 。 一、流量控制,有基于反馈的流控制盒基于速率的流控制。 二、错误检测盒纠正 在这一层,数据的单位称为转载 2014-07-01 14:51:12 · 14957 阅读 · 0 评论 -
TCP/IP各个层功能
1.TCP/IP协议族四层(ISO是七层) 应用层 传输层(TCP/UDP) 网络层(IP) 数据链路层 2.链路层:链路层包括电缆和驱动,主要功能包括按帧收发数据、比特差错控制重传。3.网络层:也就IP层,主要功能包括IP路由选择、数据分片(根据链路层MTU分片)、TTL时间减1,ICMP消息发送(当TTL=0或者遇到数据大于MTU而IP头标志不可数据分原创 2014-11-21 11:37:29 · 3063 阅读 · 0 评论 -
socket绑定INADDR_ANY,那会怎样?(例如:双通机房多网卡多IP设置)
我也回复一个!!其中INADDR_ANY就是指定地址为0.0.0.0的地址,这个地址事实上表示不确定地址,或“所有地址”、“任意地址”。一般情况下,如果你要建立网络服务器,则你要通知服务器操作系统:请在某地址 xxx.xxx.xxx.xxx上的某端口 yyyy上进行侦听,并且把侦听到的数据包发送给我。这个过程,你是通过bind()系统调用完成的。——也就是说,你的程序要绑定服务器的某地转载 2015-01-06 13:03:46 · 3233 阅读 · 0 评论 -
你所不知道的TCP/IP传输层
PS.老规矩,列出可能遇到的20个问题,如果您是都能回答的高手,请您绕道,我是小菜,只做自己的学习笔记。 1. 传输层的主要功能是什么?2. 传输层如何区分不同应用程序的数据流?3. 传输层有哪些协议?4. 什么是UDP协议?5. 为什么有了UDP,还需要TCP?6. 什么是TCP协议?7. 怎么理解协议和程序?8. TCP是否真的有链接?9. 链接转载 2015-08-17 11:10:18 · 888 阅读 · 0 评论 -
网口扫盲三:以太网芯片MAC和PHY的关系
问:如何实现单片以太网微控制器?答:诀窍是将微控制器、以太网媒体接入控制器(MAC)和物理接口收发器(PHY)整合进同一芯片,这样能去掉许多外接元器件.这种方案可使MAC和PHY实现很好的匹配,同时还可减小引脚数、缩小芯片面积.单片以太网微控制器还降低了功耗,特别是在采用掉电模式的情况下.问:以太网MAC是什么?答:MAC即Media Access Control,即媒体访问控制子层协...原创 2018-12-05 16:10:59 · 1869 阅读 · 0 评论 -
透析ICMP协议
<br /><br />对于熟悉网络的人来说, ICMP是再熟悉不过了. 它同IP协议一样工作在ISO模型的网络层, 它的全称是: Internet Control Message Protocal. 其在网络中的主要作用是:<br />- 主机探测<br />- 路由维护<br />- 路由选择<br />- 流量控制<br />对于主机探测来说有很多方法,主机某些服务的BANNER,一些使用的应用程序,或者使用工具来检测主机,如NMAP,在WEB上有www.netcraft.com来简单的估测主机。下原创 2011-05-19 17:30:00 · 1105 阅读 · 0 评论 -
关于TCP流模式与UDP数据报文模式区别
<br /><br />“TCP是一种流模式的协议,UDP是一种数据报模式的协议”,这句话相信大家对这句话已经耳熟能详~但是,“流模式”与“数据包模式”在编程的时候有什么区别呢?以下是我的理解,仅供参考!<br />1、TCP<br />打个比方比喻TCP,你家里有个蓄水池,你可以里面倒水,蓄水池上有个龙头,你可以通过龙头将水池里的水放出来,然后用各种各样的容器装(杯子、矿泉水瓶、锅碗瓢盆)接水。<br />上面的例子中,往水池里倒几次水和接几次水是没有必然联系的,也就是说你可以只倒一次水,然后分10次接完原创 2011-05-10 14:25:00 · 12233 阅读 · 5 评论 -
linux下非阻塞的tcp研究
<br /><br /> 这是根据自己的笔记整理的,如有错误,欢迎指出来.<br /> tcp协议本身是可靠的,并不等于应用程序用tcp发送数据就一定是可靠的.不管是否阻塞,send发送的大小,并不代表对端recv到多少的数据.<br /> 在阻塞模式下,send函数的过程是将应用程序请求发送的数据拷贝到发送缓存中发送并得到确认后再返回.但由于发送缓存的存在,表现为:如果发送缓存大小比请求发送的大小要大,那么send函数立即返回,同时向网络中发送数据;否则,send向网络发送缓存中不能容纳的那部分数据原创 2011-03-10 11:09:00 · 1141 阅读 · 0 评论 -
转--一个解除TCP连接的TIME_WAIT状态限制的简便方法
/************************************* 版权声明* 本文为本人原创,本人拥有此文的版权。鉴于本人持续受益于开源软件社区,* 本人声明:任何个人及团体均可不受限制的转载和复制本文,无论是否用于盈利* 之目的,但必须在转载及复制时同时保留本版权声明,否则为侵权行为,本人保* 留追究相应法律责任之权利。*转载 2009-04-22 09:49:00 · 2134 阅读 · 0 评论 -
TCP所有状态转换图
状态:描述CLOSED:无连接是活动的或正在进行LISTEN:服务器在等待进入呼叫SYN_RECV:一个连接请求已经到达,等待确认SYN_SENT:应用已经开始,打开一个连接ESTABLISHED:正常数据传输状态FIN_WAIT1:应用说它已经完成FIN_WAIT2:另一边已同意释放ITMED_WAIT:等待所有分组死掉CLOSING:两边同时尝试关闭TIME_WAIT:另一边已初始化一转载 2009-04-22 09:38:00 · 1847 阅读 · 0 评论 -
TCP/IP多播、广播、单播
广播是一种应该谨慎使用的功能。在许多情况下, IP多播被证明是一个更好的解决办法。12.4 多播IP多播提供两类服务:1) 向多个目的地址传送数据。有许多向多个接收者传送信息的应用:例如交互式会议系统和向多个接收者分发邮件或新闻。如果不采用多播,目前这些应用大多采用TCP来完成(向每个目的地址传送一个单独的数据复制)。然而,即使使用多播,某些应用可能继续采用TCP来保证它的可靠性。2) 客户对服转载 2009-05-14 10:35:00 · 2871 阅读 · 1 评论 -
TCP/IP详解读书笔记(第12章 广播和多播)
我们曾提到有三种IP地址:单播地址、广播地址和多播地址。本章将更详细地介绍广播和多播。说明:单播地址:目的为单个主机广播地址:目的端为给定网络上的所有主机多播地址:目的端为同一组内的所有主机广播和多播仅应用于UDP,因为它们需将报文同时传往多个接收者。而TCP是一个面向连接的协议,它意味着分别运行于两主机(由IP地址确定)内的两进程(由端口号确定)间存在一条连接。为了转载 2009-05-14 11:19:00 · 1616 阅读 · 0 评论 -
ip的划分,超详细.[经典]
IP和子网掩码我们都知道,IP是由四段数字组成,在此,我们先来了解一下3类常用的IP A类IP段 0.0.0.0 到127.255.255.255 B类IP段 128.0.0.0 到191.255.255.255 C类IP段 192.0.0.0 到223.255.255.255 XP默认分配的子网掩码每段只有255或0 A类的默认子网掩码 255.0.0.0 一转载 2009-05-25 18:28:00 · 986 阅读 · 0 评论 -
关于非阻塞connect和select设置
发现socket api中对connect进行超时判断,期间可能疏忽的一问题~~~如果设置connect为非阻塞函数后, 进行select时只关注writefds,忽略exceptfds,可能出现一个问题:本来不想由于connect阻塞等太久,结果用select后反而傻等了。看msdn对select中的exceptfds参数的说明:int select(__in in转载 2010-02-02 15:24:00 · 3241 阅读 · 0 评论 -
poll, select & epoll 原理比较分析
<br />因为需要了解底层设备访问的原理,所以惯用高层应用语言的我,需要了解一下Linux的设备访问机制,尤其是处理一组非阻塞IO的原理方法,标准的术语好像是叫多路复用。以下文章部分句子有引用之处,恕没有一一指出出处。<br /> <br />对于接触过Linux内核或设备驱动开发的读者,一定清楚poll和select系统调用,以及从2.5版本引入的epoll机制(epoll机制包含三个系统调用)。网上关于它们的文章,有说用法的,甚为详细,更有分析源代码的,又比较深入,且枝节颇多。经过几篇文章的阅读,我把原创 2011-02-13 20:18:00 · 1795 阅读 · 0 评论 -
非阻塞connect()和accept()
非阻塞connect()和accept()一.accept()函数1.阻塞模式阻塞模式下调用accept()函数,而且没有新连接时,进程会进入睡眠状态。2.非阻塞模式非阻塞模式下调用accept()函数,而且没有新连接时,将返回EWOULDBLOCK错误。非阻塞模式select() + accept() sockfd = listen_tcp();//socket()、bind()、listen()FD_SET(sockfd, rset);while(1){select(sockfd + 1, rset,原创 2011-02-14 15:45:00 · 18813 阅读 · 0 评论 -
epoll与select
<br />支持一个进程打开大数目的socket描述符(FD)<br />select 最不能忍受的是一个进程所打开的FD是有一定限制的,由FD_SETSIZE设置,默认值是2048。对于那些需要支持的上万连接数目的IM服务器来说显然太少了。这时候你一是可以选择修改这个宏然后重新编译内核,不过资料也同时指出这样会带来网络效率的下降,二是可以选择多进程的解决方案(传统的Apache方案),不过虽然linux上面创建进程的代价比较小,但仍旧是不可忽视的,加上进程间数据同步远比不上线程间同步的高效,所以也不是一种原创 2011-02-12 17:27:00 · 2196 阅读 · 0 评论 -
TCP协议连接建立与连接断开过程(含断开时的TCP状态图)
TCP协议连接建立时3次握手的过程。简述TCP协议连接建立时3次握手的过程。根据TCP头部,说明下列3个包在连接建立过程中的次序.0020 00 50 83 aa 46 49 3e dd 33 96 37 a3 a0 12 ...P..FI>.3.7...0030 16 a0 c4 c0 00 00 02 04 05 b4转载 2009-04-20 13:38:00 · 2637 阅读 · 0 评论