computer internet basic

Table of content:


此处输入图片的描述


OSI

简介OSI

From WIKIhttps://en.wikipedia.org/wiki/OSI_model The model partitions a communication system into abstraction layers. open system internetconnection 是由国际标准化组织ISO制定。就是ISO制定了OSI OSI模型定义了不同计算机互联的标准,是设计和描述计算机网络通信的基本框架。 OSI/RM(Open System Interconnection Reference Model)即开放系统互连基本参考模型。

分层

  • 应用层 与其它计算机进行通讯的一个应用,它是对应应用程序的通信服务的。例如,一个没有通信功能的字处理程序就不能执行通信的代码,从事字处理工作的程序员也不关心OSI的第7层。但是,如果添加了一个传输文件的选项,那么字处理器的程序员就需要实现OSI的第7层。示例:telnet,HTTP,FTP,NFS,SMTP等。
  • 表示层 这一层的主要功能是定义数据格式及加密。例如,FTP允许你选择以二进制或ASCII格式传输。如果选择二进制,那么发送方和接收方不改变文件的内容。如果选择ASCII格式,发送方将把文本从发送方的字符集转换成标准的ASCII后发送数据。在接收方将标准的ASCII转换成接收方计算机的字符集。示例:加密,ASCII等。
  • 会话层 它定义了如何开始、控制和结束一个会话,包括对多个双向消息的控制和管理,以便在只完成连续消息的一部分时可以通知应用,从而使表示层看到的数据是连续的,在某些情况下,如果表示层收到了所有的数据,则用数据代表表示层。示例:RPC,SQL等。
  • 传输层 这层的功能包括是否选择差错恢复协议还是无差错恢复协议,及在同一主机上对不同应用的数据流的输入进行复用,还包括对收到的顺序不对的数据包的重新排序功能。示例:TCP,UDP,SPX。
  • 网络层 这层对端到端的包传输进行定义,它定义了能够标识所有结点的逻辑地址,还定义了路由实现的方式和学习的方式。为了适应最大传输单元长度小于包长度的传输介质,网络层还定义了如何将一个包分解成更小的包的分段方法。示例:IP,IPX等。
  • 数据链路层 它定义了在单个链路上如何传输数据。这些协议与被讨论的各种介质有关。示例:ATM,FDDI等。
  • 物理层 OSI的物理层规范是有关传输介质的特性标准,这些规范通常也参考了其他组织制定的标准。连接头、帧、帧的使用、电流、编码及光调制等都属于各种物理层规范中的内容。物理层常用多个规范完成对所有细节的定义。示例:Rj45,802.3等。

每层所含协议

  • 物理层:以太网 · 调制解调器 · 电力线通信(PLC) · SONET/SDH · G.709 · 光导纤维 · 同轴电缆 · 双绞线等
  • 数据链路层:Wi-Fi(IEEE 802.11) · WiMAX(IEEE 802.16) ·ATM · DTM · 令牌环 · 以太网 ·FDDI · 帧中继 · GPRS · EVDO ·HSPA · HDLC · PPP · L2TP ·PPTP · ISDN·STP 等
  • 网络层协议:IP (IPv4 · IPv6) · ICMP· ICMPv6·IGMP ·IS-IS · IPsec · ARP · RARP等
  • 传输层协议:TCP · UDP · TLS · DCCP · SCTP · RSVP · OSPF 等
  • 应用层协议:DHCP ·DNS · FTP · Gopher · HTTP· IMAP4 · IRC · NNTP · XMPP ·POP3 · SIP · SMTP ·SNMP · SSH ·TELNET · RPC · RTCP · RTP ·RTSP· SDP · SOAP · GTP · STUN · NTP· SSDP · BGP · RIP 等

每层详细解析

http://baike.baidu.com/link?url=Afvh0Cqmffe9rRAQP0CPjS1w7KCLbb-uEBH1dF_VVbxq7tZO_3hzEDOd9RKTTG-kvYajpPvtpHo0dicv3ln93K

对等层实体间通信时信息的流动过程

对等层实体之间虚拟通信;下层向上层提供服务;实际通信在最底层完成;发送方数据由最高层逐渐向下层传递,到接收方数据由最低层逐渐向高层传递。

OSI参考模型中,对等层协议之间交换的信息单元统称为协议数据单元(PDU,Protocol Data Unit)。 而传输层及以下各层的PDU另外还有各自特定的名称: 传输层——数据段(Segment) 网络层——分组(数据包)(Packet) 数据链路层——数据帧(Frame) 物理层——比特(Bit)

此处输入图片的描述

七层通信

此处输入图片的描述

TCP/IP vs OSI

TCP/IP模型实际上是OSI模型的一个浓缩版本,它只有四个层次: 1.应用层,对应着OSI的应用层、表示层、会话层 2.传输层,对应着OSI的传输层 3.互联层,对应着OSI的网络层 4.网络接口层,对应着OSI的数据链路层和物理层

TCP/IP是OSI简化版,但是TCP/IP 才是成功的。通常我们所讨论的还是从TCP/IP来解决问题的,也就是它是我们在互联网操作中最主要的协议。

TCP/IP

FROM WIKI:https://en.wikipedia.org/wiki/Internet_protocol_suite

各个协议Header:https://nmap.org/book/tcpip-ref.html

此处输入图片的描述

简介

The Internet protocol suite is the computer networking model and set of communications protocols used on the Internet and similar computer networks. It is commonly known as TCP/IP, because its most important protocols, the Transmission Control Protocol (TCP) and the Internet Protocol (IP) were the first networking protocols defined in this standard.

TCP/IP 指传输控制协议/网际协议 (Transmission Control Protocol / Internet Protocol)。TCP/IP协议不是TCP和IP这两个协议的合称,而是指因特网整个TCP/IP协议族。

模块协议

此处输入图片的描述

通过图片可以看到对应的包含的协议。 并且了解每个协议的原理与作用。

分层解析

  • 网络接口层 物理层是定义物理介质的各种特性: 1、机械特性; 2、电子特性; 3、功能特性; 4、规程特性。 数据链路层是负责接收IP数据包并通过网络发送,或者从网络上接收物理帧,抽出IP数据包,交给IP层。 ARP是正向地址解析协议,通过已知的IP,寻找对应主机的MAC地址。 RARP是反向地址解析协议,通过MAC地址确定IP地址。比如无盘工作站还有DHCP服务。 常见的接口层协议有: Ethernet 802.3、Token Ring 802.5、X.25、Frame relay、HDLC、PPP ATM等。
  • 网络层 负责相邻计算机之间的通信。其功能包括三方面。 处理来自传输层的分组发送请求,收到请求后,将分组装入IP数据报,填充报头,选择去往信宿机的路径,然后将数据报发往适当的网络接口。 处理输入数据报:首先检查其合法性,然后进行寻径--假如该数据报已到达信宿机,则去掉报头,将剩下部分交给适当的传输协议;假如该数据报尚未到达信宿,则转发该数据报。 处理路径、流控、拥塞等问题。 网络层包括:IP(Internet Protocol)协议、ICMP(Internet Control Message Protocol) 控制报文协议、ARP(Address Resolution Protocol)地址转换协议、RARP(Reverse ARP)反向地址转换协议。 IP是网络层的核心,通过路由选择将下一条IP封装后交给接口层。IP数据报是无连接服务。 ICMP是网络层的补充,可以回送报文。用来检测网络是否通畅。 Ping命令就是发送ICMP的echo包,通过回送的echo relay进行网络测试。
  • 传输层 提供应用程序间的通信。其功能包括:一、格式化信息流;二、提供可靠传输。为实现后者,传输层协议规定接收端必须发回确认,并且假如分组丢失,必须重新发送,即耳熟能详的“三次握手”过程,从而提供可靠的数据传输。 传输层协议主要是:传输控制协议TCP(Transmission Control Protocol)和用户数据报协议UDP(User Datagram protocol)。
  • 应用层 向用户提供一组常用的应用程序,比如电子邮件、文件传输访问、远程登录等。远程登录TELNET使用TELNET协议提供在网络其它主机上注册的接口。TELNET会话提供了基于字符的虚拟终端。文件传输访问FTP使用FTP协议来提供网络内机器间的文件拷贝功能。 应用层协议主要包括如下几个:FTP、TELNET、DNS、SMTP、NFS、HTTP。
    • FTP(File Transfer Protocol)是文件传输协议,一般上传下载用FTP服务,数据端口是20H,控制端口是21H。
    • Telnet服务是用户远程登录服务,使用23H端口,使用明码传送,保密性差、简单方便。
    • DNS(Domain Name Service)是域名解析服务,提供域名到IP地址之间的转换,使用端口53。
    • SMTP(Simple Mail Transfer Protocol)是简单邮件传输协议,用来控制信件的发送、中转,使用端口25。
    • NFS(Network File System)是网络文件系统,用于网络中不同主机间的文件共享。
    • HTTP(Hypertext Transfer Protocol)是超文本传输协议,用于实现互联网中的WWW服务,使用端口80。

IP -- Internet Protocol

http://baike.baidu.com/subview/8370/15816170.htm https://en.wikipedia.org/wiki/Internet_Protocol 在Internet上连接的所有计算机,从大型机到微型计算机都是以独立的身份出现,我们称它为主机。为了实现各主机间的通信,每台主机都必须有一个唯一的网络地址。 IP has the task of delivering packets from the source host to the destination host solely based on the IP addresses in the packet headers. For this purpose, IP defines packet structures that encapsulate the data to be delivered. It also defines addressing methods that are used to label the datagram with source and destination information. 功能: - Datagram construction - IP addressing and routing

IPV6

IPv6是Internet Protocol Version 6的缩写,其中InternetProtocol译为“互联网协议”。IPv6是IETF(互联网工程任务组,Internet Engineering Task Force)设计的用于替代现行版本IP协议(IPv4)的下一代IP协议。 与IPV4相比,IPV6具有以下几个优势:

  1. IPv6具有更大的地址空间。IPv4中规定IP地址长度为32,即有2^32-1(符号^表示升幂,下同)个地址;而IPv6中IP地址的长度为128,即有2^128-1个地址。
  2. IPv6使用更小的路由表。IPv6的地址分配一开始就遵循聚类(Aggregation)的原则,这使得路由器能在路由表中用一条记录(Entry)表示一片子网,大大减小了路由器中路由表的长度,提高了路由器转发数据包的速度。
  3. IPv6增加了增强的组播(Multicast)支持以及对流的控制(Flow Control),这使得网络上的多媒体应用有了长足发展的机会,为服务质量(QoS,Quality of Service)控制提供了良好的网络平台。
  4. IPv6加入了对自动配置(Auto Configuration)的支持。这是对DHCP协议的改进和扩展,使得网络(尤其是局域网)的管理更加方便和快捷。
  5. IPv6具有更高的安全性。在使用IPv6网络中用户可以对网络层的数据进行加密并对IP报文进行校验,极大的增强了网络的安全性。

IP内容

互联:

IP协议实际上是一套由软件、程序组成的协议软件,它把各种不同“帧”统一转换成“网协数据包”格式,这种转换是因特网的一个最重要的特点,使所有各种计算机都能在因特网上实现互通,即具有“开放性”的特点。

数据包:

那么,“数据包(data packet)”是什么?它又有什么特点呢?数据包也是分组交换的一种形式,就是把所传送的数据分段打成 “包”,再传送出去。但是,与传统的“连接型”分组交换不同,它属于“无连接型”,是把打成的每个“包”(分组)都作为一个“独立的报文”传送出去,所以叫做“数据包”。这样,在开始通信之前就不需要先连接好一条电路,各个数据包不一定都通过同一条路径传输,所以叫做“无连接型”。这一特点非常重要,它大大提高了网络的坚固性和安全性。 数据包格式如下: 此处输入图片的描述 此处输入图片的描述 每个数据包都有报头和报文这两个部分,报头中有目的地址等必要内容,使每个数据包不经过同样的路径都能准确地到达目的地。在目的地重新组合还原成原来发送的数据。这就要IP具有分组打包和集合组装的功能。 在传送过程中,数据包的长度为30000字节(Byte)(1字节=8二进制位)。 另外,特别注意的是,ip数据包指一个完整的ip信息,即ip数据包格式中各项的取值范围或规定,如版本号可以是4或者6,ip包头长度可以是20字节-60字节,总长度不超过65535字节,封装的上层协议可以是tcp和udp等。

细则

  1. IP协议: 这种不可靠的、无连接的传送机制称为Internet协议。
  2. IP协议三个定义: (1)IP定义了在TCP/IP互联网上数据传送的基本单元和数据格式。 (2)IP软件完成路由选择功能,选择数据传送的路径。 (3)IP包含了一组不可靠分组传送的规则,指明了分组处理、差错信息发生以及分组的规则。
  3. IP数据包:联网的基本传送单元是IP数据包,包括数据包头和数据区部分。
  4. IP数据包封装:物理网络将包括数据包包头的整个数据包作为数据封装在一个帧中。
  5. MTU网络最大传送单元:不同类型的物理网对一个物理帧可传送的数据量规定不同的上界。
  6. IP数据包的重组:一是在通过一个网络重组;二是到达目的主机后重组。后者较好,它允许对每个数据包段独立地进行路由选择,且不要求路由器对分段存储或重组。
  7. 生存时间:IP数据包格式中设有一个生存时间字段,用来设置该数据包在联网中允许存在的时间,以秒为单位。如果其值为0,就把它从互联网上删除,并向源站点发回一个出错消息。
  8. IP数据包选项: IP数据包选项字段主要是用于网络测试或调试。包括:记录路由选项、源路由选项、时间戳选项等。 路由和时间戳选项提供了一种监视或控制互联网路由器路由数据包的方法。

IP地址

如今的IP网络使用32位地址,以点分十进制表示,如192.168.0.1。 地址格式为:IP地址=网络地址+主机地址 或 IP地址=网络地址+子网地址+主机地址。

公用地址

基本格式

私有地址

  • 网络号
  • 主机号
  • A----E 类地址
  • 实体 与 虚拟 IP
  • 掩码
  • 特殊地址 此处输入图片的描述

代理IP 就是代理服务器 Proxy Sever

TCP - Transmission Control Protocol

WIKI有对TCP有完整的归纳:

参考链接: http://www.networksorcery.com/enp/protocol/tcp.htm -- TCP Reference http://baike.baidu.com/view/1003841.htm http://www.networksorcery.com/enp/protocol/tcp.htm#Glossary http://coolshell.cn/articles/11564.html https://tools.ietf.org/html/rfc793

TCP的内容比较杂乱多,而且复杂。包括 TCP头格式,状态,传输,最主要的连接三次握手!!!

TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。

一次完整的数据传输: 应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分区成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传输单元(MTU)的限制)。之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。TCP为了保证不发生丢包,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的包发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据包就被假设为已丢失将会被进行重传。TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。

TCP provides reliable, ordered, and error-checked delivery of a stream of octets between applications running on hosts communicating over an IP network. TCP is the protocol that major Internet applications such as the World Wide Web, email, remote administration and file transfer rely on. Applications that do not require reliable data stream service may use the User Datagram Protocol (UDP), which provides a connectionless datagram service that emphasizes reduced latency over reliability.

数据

数据格式

数据帧:帧头+IP数据包+帧尾 (帧头包括源和目标主机MAC初步地址及类型,帧尾是校验字) IP数据包:IP头部+TCP数据信息(IP头包括源和目标主机IP地址、类型、生存期等) TCP数据信息:TCP头部+实际数据 (TCP头包括源和目标主机端口号、顺序号、确认号、校验字等)

TCP头

此处输入图片的描述

  • Source Port是源端口,16位。
  • Destination Port是目的端口,16位。
  • Sequence Number是发送数据包中的第一个字节的序列号,32位。
  • Acknowledgment Number是确认序列号,32位。
  • Data Offset是数据偏移,4位,该字段的值是TCP首部(包括选项)长度除以4。1
  • 标志位: 6位,URG表示Urgent Pointer字段有意义:
  • =======TCP FLAGS : 6bit
    • ACK表示Acknowledgment Number字段有意义
    • PSH表示Push功能,RST表示复位TCP连接
    • SYN表示SYN报文(在建立TCP连接的时候使用)
    • FIN表示没有数据需要发送了(在关闭TCP连接的时候使用)
  • Window表示接收缓冲区的空闲空间,16位,用来告诉TCP连接对端自己能够接收的最大数据长度。
  • Checksum是校验和,16位。
  • Urgent Pointers是紧急指针,16位,只有URG标志位被设置时该字段才有意义,表示紧急数据相对序列号(Sequence Number字段的值)的偏移。

名词英文解析:http://www.networksorcery.com/enp/protocol/tcp.htm#Glossary

连接建立(三次握手)

详情:http://baike.baidu.com/view/1003841.htm

此处输入图片的描述

  1. 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。 第二次
  2. 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态; 第三次
  3. 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。

连接终止(四次握手)

此处输入图片的描述

详细内容

此处输入图片的描述

TCP状态机 - State

Statu diagram 状态图 此处输入图片的描述

TCP重传机制

TCP要保证所有的数据包都可以到达,所以,必需要有重传机制。

  • 超时重传
  • 快速重传
  • SACK方法 : Selective Acknowledgment (SACK)
  • Duplicate SACK – 重复收到数据的问题 Duplicate SACK又称D-SACK,其主要使用了SACK来告诉发送方有哪些数据被重复接收了

TCP RTT算法

为了动态地设置重传时的timeout,TCP引入了RTT——Round TripTime,也就是一个数据包从发出去到回来的时间。 这样发送端就大约知道需要多少的时间,从而可以方便地设置Timeout——RTO(Retransmission TimeOut), 以让我们的重传机制更高效。

  • 经典算法
  • Karn / Partridge 算法
  • Jacobson / Karels 算法

TCP滑动窗口 - Sliding-Window

WIKI : https://en.wikipedia.org/wiki/Sliding_window_protocol

A sliding window protocol is a feature of packet-based data transmission protocols. Sliding window protocols are used where reliable in-order delivery of packets is required, such as in the Data Link Layer (OSI model) as well as in the Transmission Control Protocol (TCP).

TCP必需要解决的可靠传输以及包乱序(reordering)的问题,所以,TCP必需要知道网络实际的数据处理带宽或是数据处理速度,这样才不会引起网络拥塞,导致丢包。 所以,TCP引入了一些技术和设计来做网络流控,Sliding Window是其中一个技术。 前面我们说过,TCP头里有一个字段叫Window,又叫Advertised-Window,这个字段是接收端告诉发送端自己还有多少缓冲区可以接收数据。于是发送端就可以根据这个接收端的处理能力来发送数据,而不会导致接收端处理不过来。

TCP的拥塞处理 – Congestion Handling

慢热启动算法 – Slow Start
拥塞避免算法 – Congestion Avoidance
拥塞状态时的算法
快速恢复算法 – Fast Recovery
FACK算法

TCP Vegas 拥塞控制算法 HSTCP(High Speed TCP) 算法 TCP BIC 算法 TCP WestWood算法 《Congestion Avoidance and Control》(PDF) http://ee.lbl.gov/papers/congavoid.pdf