赞
踩
目录
主要结构:数据链路层、网络层、传输层、应用层(4层结构)
数据链路层:
数据在物理媒介上的传输。
ARP(地址解析协议)、RARP(逆地址解析协议),实现了ip地址和机器物理地址之间的转换
网络层:
数据包的选路和转发:ip协议。
ip协议选择下一跳路由器或者目标主机。
icmp协议:用于检测网络连接,8位类型+8位代码+16位校验和。
icmp差错报文:回应网络错误。目标不可达(3)、重定向(5)
查询报文:查询网络信息。如ping程序
使用循环冗余校验crc
传输层:
为应用程序提供端到端的通信,主要有tcp、udp、sctp
tcp三次握手,可靠的、面向连接的、基于流的服务。
udp提供不可靠的、无连接的、基于数据包的服务。
sctp流控制传输协议,是为了因特网上传输电话信号而设计的。
应用层:
处理应用程序的逻辑,在内核空间实现
ping、telnet、OSPF(最短路径优先)、DNS
发送端应用程序用send、write向tcp写入数据,内核中的tcp模块将数据与tcp内核发送到缓冲区,然后tcp模块调用ip模块的服务,将tcp报文段作为ip的数据部分。
udp不保存应用层数据副本,如果要重发就要将用户空间重新拷贝到udp内核发送缓冲区。
帧最大传输单元mtu是46-1500字节,过长的会被分片传输。
帧到达目的主机后沿着协议自底向上的过程,就是复用。
帧的头部用类型字段标识上层协议 arp、rarp、ip
ip数据报头部使用协议字段区分icmp、tcp、udp
TCP和udp使用头部的端口号区分上层报文
实现网络层地址到物理层地址的转换,ip-》mac。
主机向自己所在的网络广播一个arp请求,请求包含目标机器的网络地址。该网络上的其他机器收到后,被要求的机器会回应一个arp应答,包含物理地址。
arp请求应答报文
arp会维护一个高速缓存,包含经常访问的机器的ip地址到物理地址的映射。
使用dns域名访问机器,而不是IP。
dns是分布式的域名服务系统,存有大量的机器名和ip的映射。使用dns协议向服务器查询。
数据链路层、网络层、传输层是在内核实现,需要一组系统调用访问这些协议。api主要有:socket和xti。主要使用socket。
功能:1、将应用程序数据从用户缓冲区复制到tcp/udp内核发送缓冲区,交付内核发送数据,如send。或者读取数据;2、通过它修改内核中各层协议的某些头部信息或其他数据结构,控制底层通信。
socket是一套网络编程接口,还可以访问其他网络协议栈。
主要讨论:ip头部信息、ip数据报的路由和转发。
为上层协议提供无状态、无连接、不可靠的服务。
无状态:上层收到的ip数据报可能是乱序的、重复的。简单、高效。
无连接:不长久地维持对方的任何信息。每次都要指定对方的ip
不可靠:ip协议不能保证ip数据报能准确到达接收端。
传输过程中可能多次分片,在最终的机器上由ip模块重新组装
以太网帧的MTU是1500字节,头部占用20字节,最多携带1480字节。
IP协议的核心任务:数据包的路由,决定发送数据报到目标机器的路径。
ip模块工作流程:
路由机制:
路由表更新:
IP转发:
重定向:
ipv6
关注:tcp头部信息、tcp状态转移过程、tcp数据流、tcp数据流的控制。
面向连接的、字节流、可靠传输
一对一的,广播多播不适合使用tcp,可以使用udp
面向字节流:写端多次写的会在缓冲区一次性发出;读端会将所有报文放到缓冲区通知应用程序读取。应用程序的读写次数和tcp模块的接收次数没有关系。
udp是每一次写操作都有一个udp数据包发送。接收端要及时每一次对一个udp进行读操作,否则会丢包。
固定头部结构
头部选项
半关闭状态:当read系统调用返回0时即确认关闭。socket通过shutdown提供对半关闭的支持。
连接超时
TIME_WAIT状态:客户端在接收到结束报文后等待2MSL(报文段最大生存时间)再完全关闭。可靠的终止tcp连接、保证让迟来的tcp报文段有足够的时间被识别丢弃(防止某端口又有新的连接进来导致报文被接收)。
可以通过socket的SO_REUSEADDR强制进程立即使用处于TIME_WAIT状态的端口
某些情况会发送RST标志的报文段,通知关闭连接或重新建立连接。
访问不存在的端口
异常终止连接:发送后,发送端所有排队等待发送的数据都会被丢弃,使用socket的SO_LINGER
处理半打开连接:一端已经关闭了,另一端还维持着原来的连接。
tcp报文段包含的应用程序数据按照长度分为交互数据和成块数据。交互数据只有很少的字节,对实时性比较高,如ssh、telnet。
一般可能会导致拥堵,可以使用nagle算法。通信双方任意时刻最多只能发送一个没被确认的TCP报文段。
如FTP传输大文件,由于吞吐量大,tcp使用滑动窗口协议,允许发送方在停止发送前和等待确认前连续发送多个分组。即滑动窗口
用于迅速告诉对方本端发生的重要事件。
udp没有带外数据。TCP利用头部的紧急指针标志和紧急指针字段,提供了紧急方式。
tcp模块为每个tcp报文段维护一个重传定时器,在报文段第一次被发送时启动,未收到应答就重新发送并重置定时器。
慢启动、拥塞避免、快速重传、快速恢复。
web客户端和服务器之间使用http通信。
代理服务器分为正向、反向、透明代理器
正向代理由客户端设置,请求发送到代理服务器;反向代理由服务端设置,由代理服务器转发到内部网络的服务器上;透明代理设置在网关,对于用户来说是透明的,因此属于正向代理的一种。
通常会提供缓存目标资源的功能,如squid、varnish等软件
代理服务器访问dns服务器查ip、代理服务器查询路由器mac地址和arp请求应答、wget客户端和代理服务器之间的http、代理服务器和web服务器之间的http
cookie
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。