网络结构和TCP/IP协议族

网络五层模型结构图:安全

 

 

 链路层:以太网协议服务器

  规定数据包:帧,每一帧分为两部分:头(Head)和数据(Date);头固定22字节,数据最短46字节,最长1500字节,因此整个帧最短68字节,最长1522字节。头中包含发送方和接收方的MAC地址(各6字节)等。网络

  链接层只能在局域网内链接,采用广播的发送方式传递信息。加密

网络层:IP协议spa

  IP地址:32位,从0.0.0.0-255.255.255.255;前24位表明网络,后8位表明主机,同一子网络(局域网)的电脑,IP部分相同。3d

  规定数据包仍分为两部分:头(Head)和数据(Date);头部份包含版本、长度、IP地址等信息。头部20-60字节,数据部分最长65515字节,总长最长65535字节;由于以太网数据部分最长只有1500字节,因此若是IP数据包过长,须要分割成几个以太网数据包,分别发送。orm

  IP协议主要有两个做用:为每个计算机分配IP地址,肯定哪些地址在同一个子网络。blog

传输层:TCP\UDP资源

  传输层的功能就是创建“端到端”的通讯,端口:即每个使用网卡的程序的编号,是0-65535之间的一个整数。正好16位.不论是浏览网页仍是在线聊天,应用程序都会随机选用一个大于1023的端口,而后与服务器相应端口联系。terminal

  UPD:头包含发送端口和接收端口。几乎就是在数据前面加上端口号。标头只有8字节,总长度不超过65536个字节。

  TCP:能够近似地认为是有确认机制的UPD协议,每发送一个数据包都要求确认,若是有数据包遗失,发送方就能知晓并重发。TCP数据包没有长度限制,但通常不会超过IP数据包长度,以免再次分割。

      发送的时候PCT协议为每一个包编号,以便接收方按照顺序还原;第一个包编号是随机值,第二个包编号是第一个包编号+1;就是说每一个包均可以知道本身的编号的和下一个包的编号,这就可让接收方按照顺序还原啦。

 

每个应用层(TCP/IP参考模型的最高层)协议通常都会使用到两个传输层协议之一:

运行在TCP协议上的协议:

  • HTTP(Hypertext Transfer Protocol,超文本传输协议),主要用于普通浏览。
  • HTTPS(HTTP over SSL,安全超文本传输协议),HTTP协议的安全版本。
  • FTP(File Transfer Protocol,文件传输协议),用于文件传输。
  • POP3(Post Office Protocol, version 3,邮局协议),收邮件用。
  • SMTP(Simple Mail Transfer Protocol,简单邮件传输协议),用来发送电子邮件。
  • TELNET(Teletype over the Network,网络电传),经过一个终端(terminal)登录到网络。
  • SSH(Secure Shell,用于替代安全性差的TELNET),用于加密安全登录用。

运行在UDP协议上的协议:

  • BOOTP(Boot Protocol,启动协议),应用于无盘设备。
  • NTP(Network Time Protocol,网络时间协议),用于网络同步。
  • DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),动态配置IP地址。

运行在TCP和UDP协议上:

  DNS(Domain Name Service,域名服务),用于完成地址查找,邮件转发等工做。

 NDS协议:能够将网址转成IP地址。

 

TCP/IP 协议族

在互联网使用的各类协议中最重要和最著名的就是 TCP/IP 两个协议。如今人们常常提到的 TCP/IP 并不必定是单指 TCP 和 IP 这两个具体的协议,而每每是表示互联网所使用的整个 TCP/IP 协议族。

 TCP(传输控制协议)和IP(网际协议) 是最早定义的两个核心协议,因此才统称为TCP/IP协议族

TCP的三次握手四次挥手

当一个链接被创建或被终止时,交换的报文段只包含TCP头部,而没有数据。

三次握手的本质是确认通讯双方收发数据的能力

四次挥手的目的是关闭一个链接:

由于只有在客户端和服务端都没有数据要发送的时候才能断开TCP。而客户端发出FIN报文时只能保证客户端没有数据发了,服务端还有没有数据发客户端是不知道的。而服务端收到客户端的FIN报文后只能先回复客户端一个确认报文来告诉客户端我服务端已经收到你的FIN报文了,但我服务端还有一些数据没发完,等这些数据发完了服务端才能给客户端发FIN报文(因此不能一次性将确认报文和FIN报文发给客户端,就是这里多出来了一次)。

 

 

 

为何客户端发出第四次挥手的确认报文后要等2MSL的时间才能释放TCP链接?

这里一样是要考虑丢包的问题,若是第四次挥手的报文丢失,服务端没收到确认ack报文就会重发第三次挥手的报文,这样报文一去一回最长时间就是2MSL,因此须要等这么长时间来确认服务端确实已经收到了

若是已经创建了链接,可是客户端忽然出现故障了怎么办?

TCP设有一个保活计时器,客户端若是出现故障,服务器不能一直等下去,白白浪费资源。服务器每收到一次客户端的请求后都会从新复位这个计时器,时间一般是设置为2小时,若两小时尚未收到客户端的任何数据,服务器就会发送一个探测报文段,之后每隔75秒钟发送一次。若一连发送10个探测报文仍然没反应,服务器就认为客户端出了故障,接着就关闭链接。

相关文章
相关标签/搜索