C++复习之路23:计算机网络相关3:

1.TDP与UDP的区别:

1、连接方面区别

TCP面向连接(如打电话要先拨号建立连接)。

UDP是无连接的,即发送数据之前不需要建立连接。

2、安全方面的区别

TCP提供可靠的服务,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达。

UDP尽最大努力交付,即不保证可靠交付。

3、传输效率的区别

TCP传输效率相对较低。

UDP传输效率高,适用于对高速传输和实时性有较高的通信或广播通信。

4、连接对象数量的区别

TCP连接只能是点到点、一对一的。

UDP支持一对一,一对多,多对一和多对多的交互通信。

因此也就造成了两者在应用场景上的不同:

UDP多运用在实时视频传输、聊天工具、实时游戏上

TCP多运用于文件传输、邮件、远程登录等

2.TDP与UDP相关的协议和端口号:

使用TCP协议的常见端口
主要有以下几种: 
(1) FTP:定义了文件传输协议,使用21端口。常说某某计算机开了FTP服务便是启动了文件传输服务。下载文件,上传主页,都要用到FTP服务。 
(2) Telnet:它是一种用于远程登陆的端口,用户可以以自己的身份远程连接到计算机上,通过这种端口可以提供一种基于DOS模式下的通信服务。
        如以前的BBS是纯字符界面的,支持BBS的服务器将23端口打开,对外提供服务。 
(3) SMTP:定义了简单邮件传送协议,现在很多邮件服务器都用的是这个协议,用于发送邮件。如常见的免费邮件服务中用的就是这个邮件服务端口,
       所以在电子邮件设置中常看到有这么SMTP端口设置这个栏,服务器开放的是25号端口。 

(4) POP3:它是和SMTP对应,POP3用于接收邮件。通常情况下,POP3协议所用的是110端口。也是说,只要你有相应的使用POP3协议的程序(例如Foxmail或Outlook),
        就可以不以Web方式登陆进邮箱界面,直接用邮件程序就可以收到邮件(如是163邮箱就没有必要先进入网易网站,再进入自己的邮箱来收信)。 

使用UDP协议端口
常见的有: 
(1) HTTP:这是大家用得最多的协议,它就是常说的"超文本传输协议"。上网浏览网页时,就得在提供网页资源的计算机上打开80号端口以提供服务。常说"WWW服务"、
   "Web服务器"用的就是这个端口。 
(2) DNS:用于域名解析服务,这种服务在Windows NT系统中用得最多的。因特网上的每一台计算机都有一个网络地址与之对应,这个地址是常说的IP地址,
    它以纯数字+"."的形式表示。然而这却不便记忆,于是出现了域名,访问计算机的时候只需要知道域名,域名和IP地址之间的变换由DNS服务器来完成。DNS用的是53号端口。 

(3) SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。 
(4) OICQ:OICQ程序既接受服务,又提供服务,这样两个聊天的人才是平等的。OICQ用的是无连接的协议,也是说它用的是UDP协议。OICQ服务器是使用8000号端口,
 侦听是否有信息到来,客户端使用4000号端口,向外发送信息。如果上述两个端口正在使用(有很多人同时和几个好友聊天),就顺序往上加。 
  在计算机的6万多个端口,通常把端口号为1024以内的称之为常用端口,这些常用端口所对应的服务通常情况下是固定的。表1所列的都是服务器默认的端口, 不允许改变,一般通信过程都主要用到这些端口。 
(1). HTTP协议代理服务器常用端口号:80/8080/3128/8081/9080 
(2). SOCKS代理协议服务器常用端口号:1080 
(3). FTP协议代理服务器常用端口号:21 
(4). Telnet协议代理服务器常用端口:23

3.建立TCP服务器的各个系统调用:

4.路由协议所使用的算法

5.Tcp、udp、ip首部的认识

一、IP首部:

1、第一个4字节(也就是第一行):

(1)版本号(Version),4位;用于标识IP协议版本,IPv4是0100,IPv6是0110,也就是二进制的4和6。

(2)首部长度(Internet Header Length),4位;用于标识首部的长度,单位为4字节,所以首部长度最大值为:(2^4 - 1) * 4 = 60字节,但一般只推荐使用20字节的固定长度。

(3)区分服务(Type Of Service),8位;用于标识IP包的优先级,但现在并未使用。

(4)总长度(Total Length),16位;标识IP数据报的总长度,最大为:2^16 -1 = 65535字节。

2、第二个四字节:

(1)标识(Identification),16位;用于标识IP数据报,如果因为数据链路层帧数据段长度限制(也就是MTU,支持的最大传输单元),IP数据报需要进行分片发送,则每个分片的IP数据报标识都是一致的。

(2)标识(Flag),3位,但目前只有2位有意义;最低位为MF,MF=1代表后面还有分片的数据报,MF=0代表当前数据报已是最后的数据报。次低位为DF,DF=1代表不能分片,DF=0代表可以分片。

(3)片偏移(Fragment Offset),13位;代表某个分片在原始数据中的相对位置。

3、第三个四字节:

(1)生存时间(TTL),8位;以前代表IP数据报最大的生存时间,现在标识IP数据报可以经过的路由器数。

(2)协议(Protocol),8位;代表上层传输层协议的类型,1代表ICMP,2代表IGMP,6代表TCP,17代表UDP。协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道要将数据部分上交给哪个处理过程。

(3)首部检验和(Header Checksum),16位;只检验数据报的首部,但不包括数据部分。用于验证数据完整性,计算方法为,发送方:首先把IP数据报首部划分为许多16位字的序列,将校验和位置零,然后把所有16位字反码算术运算相加后,将得到的和的反码写入检验和字段。(分为16位字的序列,求和取反码写入检验和字段)。接受方:将首部的所有16位字再使用反码算术运算相加一次,将取得的和取反码。若首部未发生任何变化,则此结果为0,于是保留这个数据报。否则认为出差错,并将此数据报丢弃。

4、第四个四字节:源IP地址

5、第五个四字节:目的IP地址

二、TCP首部

 

1、第一个4字节:

(1)源端口,16位;发送数据的源进程端口

(2)目的端口,16位;接收数据的进程端口

2、第二个4字节与第三个4字节

(1)序号,32位;代表当前TCP数据段第一个字节占整个字节流的相对位置;

(2)确认号,32位;代表接收端希望接收的数据序号,为上次接收到数据报的序号+1,当ACK标志位为1时才生效。

3、第四个4字节:

(1)数据偏移,4位;实际代表TCP首部长度,最大为60字节。

(2)保留。占6位,保留为今后使用,但目前应置为0。

(3)6个标志位,每个标志位1位;

URG,为紧急序号,URG=1是紧急指针有效;

ACK,为确认序号,ACK=1时确认号才有效;

PSH,指示接收方立即将数据提交给应用层,而不是等待缓冲区满;

RST,重置连接。当RST=1时,表明TCP连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。RST置1还用来拒绝一个非法的报文段或拒绝打开一个连接。

SYN,为同步标志,用于数据同步;

FIN,为结束序号,用于发送端提出断开连接;

(3)窗口值,16位;标识接收方可接受的数据字节数。明确指出了现在允许对方发送的数据量。例如,设确认号是701,窗口字段是1000.这就表明,从701号算起,发送此报文段的一方还有接受1000个字节数据(字节序号是701~1700)的接收缓存空间。详解可参看:http://www.cnblogs.com/woaiyy/p/3554182.html

4、第五个4字节

(1)校验和,16位;用于检验数据完整性。

(2)紧急指针。16位;只有当URG标识位为1时,紧急指针才有效。它指出本报文段中的紧急数据的字节数(紧急数据的末尾在报文段中的位置)。紧急指针的值与序号的相加值为紧急数据的最后一个字节位置。用于发送紧急数据。

(不固定长度)

选项 MSS(最大报文段长度、默认536字长)、窗口扩大、时间戳、选择确认。

填充。

三、UDP首部

UDP首部比较简单,看图即可理解。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

溯夜流云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值