7.22牛客网总结

路由器(Router):是连接因特网中各局域网、广域网的设备,它会根据信道的情况自动选择和设定路由,以最佳路径,按前后顺序发送信号。路由和交换机之间的主要区别就是交换机发生在OSI参考模型第二层(数据链路层),而路由发生在第三层,即网络层。这一区别决定了路由和交换机在移动信息的过程中需使用不同的控制信息,所以说两者实现各自功能的方式是不同的。


1.网络层:路由器、防火墙
2.数据链路层:网卡、网桥、交换机
3.物理层:中继器、集线器


我国对独立型STP设备要求其信令链路数不得小于 512。
七层网络模型的各层协议:
物理层:RJ45、CLOCK、IEEE802.3 
数据链路:PPP、FR、HDLC、VLAN、MAC 
网络层:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP
传输层:TCP、UDP、SPX
会话层:NFS、SQL、NETBIOS、RPC
表示层:JPEG、MPEG、ASII
应用层:FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS
RTH:实时传输协议,传输层
SSH:建立在应用层和传输层的基础上。
UDP:用户数据报协议,传输层,不可靠的无连接协议
RIP:内部网关协议,一种动态路由协议
OSPF:开放式最短路径优先协议。网络层,作用域一个自治系统
BGP:边界网关协议,基于TCP的动态路由协议,用来连接好几个自治系统


服务器客户端调用的函数:
服务器:socket();//socket要求必须绑定socket;
              bind();//绑定端口和IP,这样我们才知道是那台主机;
              listen();//监听,看有没有请求连接
              accept();//接收请求
              send()||rev();//接收和发送消息
1.调用socket函数创建套接字:int socket(int domain, int type, int protocol)//成功返回文件描述符,失败返回-1
domain:套接字中使用的协议簇信息(Protocol)//PF_INET ipv4PF_INET6 ipv6  ...
type:套接字数据传输类型信息//TCP面向连接的套接字SOCK_STREAMUDP面向消息的套接字SOCK_DGRAM
protocol:计算机间通信使用的协议信息//IPPROTO_TCPIPPROTO_UDP
2.调用bind函数绑定IP地址和端口号:int bind(int sockfd, struct sockaddr *myaddr, socklen_t addrlen)//成功返回0,失败返回-1
多播IP地址:A127 B191 C223 D类
端口号:区别应用程序0-65535 16位
3.调用listen函数转为可接收请求状态:int listen(int sockfd, int backlog)//成功返回0,失败返回-1
4.调用accept函数受理连接请求:int accept(int sockfd, struct sockaddr *myaddr,socklen_t *addrlen)//成功返回文件描述符,失败返回-1
5.read()/write():数据交换
6.close函数关闭连接


客户端:socket();//socket要求必须绑定socket;
              connect();//请求连接


linux tcpdump监听网卡 eth0,对方主机IP为10.1.1.180,tcp端口为80的数据,相应命令为?
答:tcpdump -i eth0 -nn 'tcp and port 80 and host 10.1.1.180'
  Tcpdump没有-h选项


分片内容:
 当一个IP数据报封装成链路层的帧时,此数据报的总长度(即报头区加上数据部分)一定不能超过下层的数据链路层的MTU值,否则无法传输。 因此,我们需要对IP包进行分片,其中IP数据报的首部中,和IP数据包分片有关的字段为——总长度、标识、标志以及位偏移.分片由网络层的路由器完成
        目的主机收到所有分片后,对分片进行重新组装还原的过程叫做IP数据报重组。IP协议规定,只有最终的目的主机才可以对分片进行重组。目的主机接收到所有的数据包的分包之后,根据数据包首部中保存的信息,还原最初的数据包。这就是数据包的重组过程。


有关tcp连接握手
1. accept() api调用发生在三次握手之后
2. “三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误”
3. 因为tcp是全双工模式,接收到FIN时意味将没有数据再发来,但是还是可以继续发送数据,所以断开连接时必须是四次握手


关于几类ip地址的解释:
最初设计互联网络时,为了便于寻址以及层次化构造网络,每个IP地址包括两个标识码(ID),即网络ID和主机ID。同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机(包括网络上工作站,服务器和路由器等)有一个主机ID与其对应。IP地址根据网络ID的不同分为5种类型,A类地址、B类地址、C类地址、D类地址和E类地址。 
1. A类IP地址 
一个A类IP地址由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”, 地址范围从1.0.0.0 到126.0.0.0。可用的A类网络有126个,每个网络能容纳1亿多个主机。 
2. B类IP地址 
一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,地址范围从128.0.0.0到191.255.255.255。可用的B类网络有16382个,每个网络能容纳6万多个主机 。 
3. C类IP地址 
一个C类IP地址由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“110”。范围从192.0.0.0到223.255.255.255。C类网络可达209万余个,每个网络能容纳254个主机。 
4. D类地址用于多点广播(Multicast)。 
D类IP地址第一个字节以“lll0”开始,它是一个专门保留的地址。它并不指向特定的网络,目前这一类地址被用在多点广播(Multicast)中。多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。 
5. E类IP地址 
以“llll0”开始,为将来使用保留。 
在IP地址3种主要类型里,各保留了3个区域作为私有地址,其地址范围如下: 
A类地址:10.0.0.0~10.255.255.255 
B类地址:172.16.0.0~172.31.255.255 
C类地址:192.168.0.0~192.168.255.255






int listen(SOCKET s, int backlog);该函数中第二个参数的含义是?
答:《TCP/IP详解   卷1:协议》 解释 
1)backlog  用于在TCP层接收链接的缓冲池的最大个数,这个个数可在应用层中的listen函数里设置,当客户链接请求大于这个个数(缓冲池满),其它的未进入链接缓冲池的客户端在tcp层上tcp模块会自动重新链接,直到超时(大约57秒后)   
2)我们的应用层的链接完成是要从tcp层的链接缓冲池中移出一个(accept函数实现)
backlog是连接请求队列的最大长度。   
1.在WinSock1.1中最大值5。如果backlog小于1,则backlog被置喂1;若backlog大于SOMAXCONN(定义在winsock.h中,值为5),则backlog被置为SOMAXCONN。   
2.在WinSock2中,没有制定具体值,它由服务提供者决定   
3.有时候backlog设置很小,这时我们接进多少台机器都没问题是因为服务器机器处理速度很快队列来不及填满就处理完了,而且在同一个时刻到来的连接还是很少的。


各类结构:
A,总线结构是指所有计算机通过一跟总线通信
B,环形结构相当于多台计算机的网线手拉手围成一个圈的连接模型
C,星型结构是有一个中心点,向外辐射出多条链路,符合题目描述的情况
D,网状结构也就是计算机之间交互连接,任意两台计算机之间直接或者间接相连


计算题:阿里巴巴有相距1500km的机房A和B,现有100GB数据需要通过一条FTP连接在100s的时间内从A传输到B。已知FTP连接建立在TCP协议之上,而TCP协议通过ACK来确认每个数据包是否正确传送。网络信号传输速度2*108 m/s,假设机房间带宽足够高,那么A节点的发送缓冲区可以设置为最小
答:TCP协议原理:TCP每发送一个报文段,就启动一个定时器,如果在定时器超时之后还没有收到ACK确认,就重传该报文。 如图所示,数据包由A的缓冲区发往B,B在收到数据包以后,回发一个ACK确认包给A,之后A将该数据包从缓冲区释放。因此,该数据包会一直缓存在A的缓冲区,直到一个ACK确认为止。题目要求在100s内发送100GB数据,网络的传输速率至少是1G/s,某个数据包n在A中缓存的时间就是数据包n从A到B,再加上该数据包的ACK从B到A的时间:2*1500m/(2*108m/s)=1.5*10-2s,该段时间A中缓存的数据量至少是1G/s*1.5*10-2s约为15M




   子网掩码前面全是1,后面为0,必须是连续的


 常用单位之间的换算:
 
1K=512个汉字(手机)


1K=1Kb=1024b=8*1024 Bit 


1M=1Mb=1024K=1024Kb=1024*1024B 


1G=1Gb=1024M=1024Mb=1024*1024KB=10243B 


1TB=1024GB=10242MB=10243KB=10244B=8*10244位 


ARP地址解析协议,将IP地址解析成物理MAC地址;RARP反向地址解析协议,将MAC地址解析成IP地址。


各类状态:
CLOSED:初始状态,表示没有任何连接。
LISTEN:Server端的某个Socket正在监听来自远方的TCP端口的连接请求。
SYN_SENT:发送连接请求后等待确认信息。当客户端Socket进行Connect连接时,会首先发送SYN包,随即进入SYN_SENT状态,然后等待Server端发送三次握手中的第2个包。
SYN_RECEIVED:收到一个连接请求后回送确认信息和对等的连接请求,然后等待确认信息。通常是建立TCP连接的三次握手过程中的一个中间状态,表示Server端的Socket接收到来自Client的SYN包,并作出回应。
ESTABLISHED:表示连接已经建立,可以进行数据传输。
FIN_WAIT_1:主动关闭连接的一方等待对方返回ACK包。若Socket在ESTABLISHED状态下主动关闭连接并向对方发送FIN包(表示己方不再有数据需要发送),则进入FIN_WAIT_1状态,等待对方返回ACK包,此后还能读取数据,但不能发送数据。在正常情况下,无论对方处于何种状态,都应该马上返回ACK包,所以FIN_WAIT_1状态一般很难见到。
FIN_WAIT_2:主动关闭连接的一方收到对方返回的ACK包后,等待对方发送FIN包。处于FIN_WAIT_1状态下的Socket收到了对方返回的ACK包后,便进入FIN_WAIT_2状态。由于FIN_WAIT_2状态下的Socket需要等待对方发送的FIN包,所有常常可以看到。若在FIN_WAIT_1状态下收到对方发送的同时带有FIN和ACK的包时,则直接进入TIME_WAIT状态,无须经过FIN_WAIT_2状态。
TIME_WAIT:主动关闭连接的一方收到对方发送的FIN包后返回ACK包(表示对方也不再有数据需要发送,此后不能再读取或发送数据),然后等待足够长的时间(2MSL)以确保对方接收到ACK包(考虑到丢失ACK包的可能和迷路重复数据包的影响),最后回到CLOSED状态,释放网络资源。
CLOSE_WAIT:表示被动关闭连接的一方在等待关闭连接。当收到对方发送的FIN包后(表示对方不再有数据需要发送),相应的返回ACK包,然后进入CLOSE_WAIT状态。在该状态下,若己方还有数据未发送,则可以继续向对方进行发送,但不能再读取数据,直到数据发送完毕。
LAST_ACK:被动关闭连接的一方在CLOSE_WAIT状态下完成数据的发送后便可向对方发送FIN包(表示己方不再有数据需要发送),然后等待对方返回ACK包。收到ACK包后便回到CLOSED状态,释放网络资源。
CLOSING:比较罕见的例外状态。正常情况下,发送FIN包后应该先收到(或同时收到)对方的ACK包,再收到对方的FIN包,而CLOSING状态表示发送FIN包后并没有收到对方的ACK包,却已收到了对方的FIN包。有两种情况可能导致这种状态:其一,如果双方几乎在同时关闭连接,那么就可能出现双方同时发送FIN包的情况;其二,如果ACK包丢失而对方的FIN包很快发出,也会出现FIN先于ACK到达。


Cookie:
客户端保存了不同服务器的cookie,每个服务器只能获取对应的cookie。
 Cookie就是服务器暂存放在你的电脑里的资料(.txt格式的文本文件),通过在HTTP传输中的状态好让服务器用来辨认你的计算机。当你在浏览网站的时候,Web服务器会先送一小小资料放在你的计算机上,Cookie 会帮你在网站上所打的文字或是一些选择都记录下来。当下次你再访问同一个网站,Web服务器会先看看有没有它上次留下的Cookie资料,有的话,就会依据Cookie里的内容来判断使用者,送出特定的网页内容给你。
http请求是指从客户端到服务器端的请求消息。包括:消息首行中,对资源的请求方法、资源的标识符及使用的协议。


使用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协议端口常见的有:
(5)
HTTP:这是大家用得最多的协议,它就是常说的"超文本传输协议"。上网浏览网页时,就得在提供网页资源的计算机上打开80号端口以提供服务。常说"WWW服务"、"Web服务器"用的就是这个端口。
(6) DNS:用于域名解析服务,这种服务在Windows NT系统中用得最多的。因特网上的每一台计算机都有一个网络地址与之对应,这个地址是常说的IP地址,它以纯数字+"."的形式表示。然而这却不便记忆,于是出现了域名,访问计算机的时候只需要知道域名,域名和IP地址之间的变换由DNS服务器来完成。DNS用的是53号端口。
 (7) SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。
(8)
OICQ:OICQ程序既接受服务,又提供服务,这样两个聊天的人才是平等的。OICQ用
的是无连接的协议,也是说它用的是UDP协议。OICQ服务器是使用8000号端口,侦听是否有信息到来,客户端使用4000号端口,向外发送信息。如果上述两个端口正在使用(有很多人同时和几个好友聊天),就顺序往上加。
在计算机的6万多个端口,通常把端口号为1024以内的称之为常用端口,这些常用端口所对应的服务通常情况下是固定的。表1所列的都是服务器默认的端口,不允许改变,一般通信过程都主要用到这些端口。
表1
服务类型默认端口服务类型默认端口
Echo7   Daytime13
FTP21   Telnet23
SMTP25   Time37
Whois43   DNS53
Gopher70   Finger79
WWW80    POP3110
NNTP119    IRC194
 
另外代理服务器常用以下端口:
(1). HTTP协议代理服务器常用端口号:80/8080/3128/8081/9080
(2). SOCKS代理协议服务器常用端口号:1080
(3). FTP协议代理服务器常用端口号:21
(4). Telnet协议代理服务器常用端口:23 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值