zoukankan      html  css  js  c++  java
  • TCP/IP学习笔记(一)

      
    网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能。
    TCP/IP通常被认为是一个四层协议系统。分别为:
    1. 链路层:也称作“数据链路层”或“网络接口层”,通常包括设备驱动程序和计算机中对应的网络接口卡(网卡),。处理与电缆(或其它传输介质)的物理接口细节。
     
    2. 网络层:也称“互联网层”,处理分组在网络中的活动,如分组的选路。TCP/IP协议族中,网络层协议包括“IP(网际) 协议”,“ICMP(internet互联网控制报文)协议”,以及“IGMP(internet组管理)协议”。
     
    3. 运输层:主要为两台主机上的应用程序提供“端到端”的通信,TCP/IP协议族中有两个互不相同的传输协议:“TCP传输控制协议”和“UDP用户数据报协议”。TCP为两台主机提供高可靠性的数据通信,它所做的工作是将应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。由于运输层提供了高可靠性的端到端通信,因此应用层可忽略所有这些细节。UDP则为应用层提供一种非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机,并不保证数据报能否到达另一端,所以任何必需的可靠性必须由应用层来完成。
     
    4. 应用层:负责处理特定的应用程序细节(如:FTP、Telnet等都属于应用层协议)
     
    TCP/IP协议族是一组不同的协议组合在一起构成的协议族。尽管通常称该协议族为TCP/IP,但TCP和IP只是其中的两种协议而已(该协议族的另一个名字是Internet协议族(Internet Protocol Suite))。
     
    TCP/IP协议族中,网络层IP提供的是一种不可靠的服务。也就是说,它只是尽可能快地把分组从源结点送到目的地点,但是并不提供任何可靠性的保证。而另一方面,TCP在不可靠的IP层上提供了一个可靠的运输层。为了提供这种可靠的服务,TCP采用了超时重传、发送和接收端到端的确认分组机制。运输层(TCP)和网络层(IP)分别负责不同的功能。
     
    TCP和UDP两者都是使用IP作为网络层协议。虽然TCP使用不可靠的IP服务,但它却提供一种可靠的运输层服务(即超时重传,分组确认)。UDP则是不可靠的(不能保证数据报安全无误地到达最终目的地)。
     
    IP是网络层上主要的协议,同时被TCP和UDP使用。TCP和UDP的每组数据都通过端系统和每个中间路由器中的IP层在互联网中进行传输。
     
    ICMP是IP协议的附属协议。IP层用它来与其它主机或路由器交换错误报文和其它重要信息。
     
    IGMP是Internet组管理协议。它用来把一个UDP数据报多播到多个主机。
     
    ARP(地址解析协议)和RARP(逆向地址解析协议)是某些网络接口(如以太网和令牌环网)使用的特殊协议,用来转换IP层和网络接口层使用的地址。
    当应用程序用TCP传输数据时,数据被送入协议中,然后逐个通过每一层直到被当作一串比特流送入网络。其中每一层收到的数据都要增加一些首部信息(有时还要增加尾部信息)。
    TCP传给IP的数据单元称作TCP报文段或简称TCP段(TCP segment)。IP传给网络接口层的数据单元称作IP数据报(IP datagram)。通过以太网的比特流称作帧(Frame)。
     
    以太网数据帧的物理特性是其长度必须在46-1500字节之间。
     
    由于TCP、UDP、ICMP、IGMP都要向IP传送数据,因此IP必须在生成的IP首部中加入某种标识,以表明数据属于哪一层。为此IP在首部中加入一个长度为8bit的数值,称作协议域。1表示ICMP协议,2表示为IGMP协议,6表示为TCP协议,17表示为UDP协议。
     
    许多应用程序都可使用TCP或UDP来传送数据。运输层协议在生成的报文首部时要存入一个应用程序的标识符。TCP和UDP都用一个16bit的端口号来表示不同的应用程序。TCP和UDP把源端口号和目的端口号分别存入报文首部中。
     
    网络接口分别要发送和接收IP、ARP和RARP数据,因此也必须在以太网的帧首部中加入某种形式的标识,以指明生成数据的网络层协议。以太网的帧首部有一个16bit的帧类型域。
     
    当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的上层协议。这个过程称作分用(Demultiplexing)。
     
    大部分网络应用程序在编写时都假设一端是客户,另一端是服务器,其目的是为了让服务器为客户提供一定的服务。
    可以将这种服务分为两种类型:重复型或并发型。
    重复型服务器的交互步骤为:(一般为UDP服务器。注:也存在一些例外)
    A1。等待一个客户请求的到来。
    A2。处理客户请求。
    A3。发送响应给发送请求的客户。
    A4。返回A1步。
    重复型服务器的主要问题发生在A2状态,在这个时候,它不能为其它客户机提供服务。
     
    并发型服务器的交互步骤:(一般为TCP服务器,注:也存在一些例外)
    B1。等待一个客户请求的到来。
    B2。启动一个新的服务器来处理这个客户的请求。在这期间可能生成一个新的进程、任务或线程,并依赖底层操作系统的支持。这个步骤如何进行取决于操作系统。生成的新服务器对客户的全部请求进行处理。处理结束后,终止这个服务器。
    B3。返回B1步。
     
    TCP/IP协议族分为四层:链路层、网络层、运输层、应用层。每一层各有不同的责任。
    在TCP/IP中,网络层和运输层之间的区别是最为关键的:网络层(IP)提供点到点的服务,而运输层(TCP)提供端到端的服务。
     
  • 相关阅读:
    leetcode笔记--7 Find the Difference
    数据挖掘:概念与技术--笔记1--度量数据的相似性与相异性
    leetcode笔记--6 Add Digits
    leetcode 笔记5 single number
    数据挖掘导论笔记2 数据集的类型
    **leetcode笔记--4 Sum of Two Integers
    vs2015-Cordova开发安卓应用环境搭建
    c#一些常用的方法集合
    c#根据ip获取城市地址
    asp.net mvc 无刷新加载
  • 原文地址:https://www.cnblogs.com/tyjsjl/p/2156124.html
Copyright © 2011-2022 走看看