端口数据[精通WindowsSocket网络开发基于VC++实现]第二章——TCP/IP简介

最近研究端口数据,稍微总结一下,以后继续补充:

    

OSI

    开辟系统互连参考模型(OSI,Open System Interconnection)

    端口和数据端口和数据

    

  1. 物理层:bit流,有计算机和网络介质组成,负责将数据编码成比特流,并以此方式在网上传输
  2. 数据链路层:负责准备物理层传输,修正传输中的错误,将数据封装成帧(Frame)
  3. 网络层:管理网络地址,选择路由,定义数据封包(Packet)
  4. 传输层:将上层数据分段(Segment),供给端到端的传输,供给服务质量(QoS)
  5. 会话层:建立,管理,终止会话等
  6. 表示层:将网络传输的内容转换为用户有意义的编码
  7. 应用层:为操作系统或网络应用程序供给访问网络服务的接口

    

TCP/IP

    TCP/IP协议从名称上看包括传输控制协议(TCP)和因特网协议(IP)两个协议。实际上,TCP/IP由很多协议组成,是Internet协议族,TCPIP是其中两个最主要的协议。

    端口和数据端口和数据 

    

IP

因特网协议(Internet Protocol) 负责主机间数据的路由和网络上数据的存储。同时为ICMPTCPUDP供给分组发送服务。用户进程平日不需要涉及这一层。

对数据分组停止无连接的最佳传送路由选择(即供给全网范围的寻址功能)

ARP

地址解析协议(Address Resolution Protocol)此协议将网络地址映射到硬件地址。

为已知的IP地址肯定网络接口层的MAC地址;

RARP

反向地址解析协议(Reverse Address Resolution Protocol)此协议将硬件地址映射到网络地址

为已知的网络接口层MAC地址肯定对应的IP地址。

ICMP

网间报文控制协议(Internet Control Message Protocol)此协议处理信关和主机的差错和传送控制。

供给控制和传递消息的功能(但通信时需用IP封装)

   

TCP

传送控制协议(Transmission Control Protocol)这是一种供给给用户进程的牢靠的全双工字节流面向连接的协议。它要为用户进程供给虚电路服务,并为数据牢靠传输建立检查。(注:大多数网络用户程序应用TCP

UDP

用户数据报协议(User Datagram Protocol)这是供给给用户进程的无连接协议,用于传送数据而不执行正确性检查。

   

FTP

文件传输协议(File Transfer Protocol)允许用户以文件操作的方式(文件的增、删、改、查、传送等)与另外一主机相互通信。

SMTP

简单邮件传送协议(Simple Mail Transfer Protocol)SMTP协议为系统之间传送电子邮件。

Telnet

终端协议(Telnet Terminal Procotol)允许用户以虚终端方式访问远程主机

HTTP

超文本传输协议(Hypertext Transfer Procotol)

TFTP

简单文件传输协议(Trivial File Transfer Protocol)

    在TCP/IP模式中,因特网协议(IP)的主要任务是将数据分割成很多较小的封包(Packet),并且将这些包发送出去。IP属于无连接的通信协议,不能保证每一个封包都正确无误地达到目的地。至于封包以何种方式传递,能否正确达到目的地,则由上次协议(TCPUDP)负责。 

    编程接口等于套接字,是应用层到传输层的接口。套接字作为应用层与传输层的接口,是因为应用层拥有以下几个方面的特点:

    (1)应用层处理应用程序的细节,而不必知道通信细节。TCP/IP模型中应用层上面的3层不必知道应用程序的细节,但能处理所有通信细节

    (2)平日应用程序构成用户进程,而TCP/IP模型中上面3层平日作为操作系统内核的一部分。

    端口和数据

    客户端与服务端之间是有TCP/IP停止通信如上图所示。传输层的通信是有的协议为TCP,网络层是有的协议为IP。客户端与服务器之间的数据在一端时从用户进程到内核,在另外一端则是从内核到用户进程。套接字在应用层到内核之间和从内核懂爱应用层之间承当接口的角色。

    

UDP

    UDPUser Datagram Protocol的缩写,是一种无连接的传输层协议,供给不牢靠信息传输服务。UDP拥有以下特点

    

  1. 供给无连接服务。客户端向服务器发送数据时不必先建立连接。客户端创立一个套接字并向服务器发送一个数据报,然后客户端可以立即用这个套接字向另外一个服务器发送其他数据
  2. 不能确保UDP数据报终究达到目的地。UDP对接受的数据报不发送确认,发送端不知道是否被正确接收,也不会重发数据。
  3. UDP传输数据较TCP快,占用系统资源少

    

TCP

    TCPTransmission Control Protocol的缩写,是一种面向连接的,牢靠的,基于字节流的传输层通信协议。该协议在主机间建立一个虚拟连接,以实现牢靠的数据通信。因特网协议(IP)不能保证数据包精确发送给目标主机,而TCP不同。发送数据时,TCP要求对方在连接数据后返回一个确认。如果在某个时限内TCP没有接收到对方的确认,那么TCP将重新发送数据包。在连接数据的一方,如果接收到无序的数据包,TCP还将负责数据包的重新排序。TCP拥有以下特点:

    

  1. 供给面向连接的服务。客户端与服务器通信时,必须首先建立连接
  2. 供给牢靠的服务。当TCP向对方发送数据时,要求对方返回一个确认。如果没有接收到对方的确认,则TCP自动重传数据
  3. TCP对发送的数据停止排序,为每一个发送字节关联一个序列号。对方根据接收到的数据序列号,对接收数据排序,从而保证了数据次序
  4. TCP供给流量控制。TCP总是告诉对方它可以接收数据的字节数
  5. TCP连接是全双工的。这意味着应用程序在任何时候,既可发送数据也可接收数据

    

三次握手

    建立一个TCP连接,需要经过一些几个步调

    

  1.  服务器准备接收客户端的连接
  2.  客户端向服务器发送连接请求。此时客户端TCP发送一个SYN分节
  3.  服务器确认客户端的SYN(同步),同时也发送一个SYN分节。服务器以单个分节向客户端发送SYN和客户端SYNACK(确认)
  4.  客户端确认服务器的SYN
    每日一道理
微笑着,去唱生活的歌谣,不要埋怨生活给予了太多的磨难,不必抱怨生命中有太多的曲折。大海如果失去了巨浪的翻滚,就会失去雄浑;沙漠如果失去了飞沙的狂舞,就会失去壮观。人生如果仅去求得两点一线的一帆风顺,生命也就失去了存在的意义。

    由于在建立连接时最少需要交换3个分组,所以称为TCP的三次握手

    

TCP终止连接

    TCP3个分节建立连接,用4个分节终止连接,具体如下

    

  1. 连接中的一方首先执行了关闭,该方被称为执行了一个自动关闭。该发送方的TCP向对方发送一个FIN(结束)分节,表示发送数据完毕
  2. 接收方接收到FIN,执行被动关闭。接收方TCP向发送方发送一ACK
  3. 接收方也执行关闭。这导致接收方的TCP也发送一个FIN
  4. 原发送方接收到接收方的FIN后,他的TCP也返回一个ACK

    因为每一个方向都需要发送一个FIN和返回一个ACK,所以关闭连接时一般需要4个分节。但也不消除步调(2)和步调(3)ACKFIN合成一个分节的情况。

    

端口

    

MAC地址

也叫物理地址。网卡的物理地址是由网卡生产厂家烧如网卡的EPROM,是全球唯一的48比特的整数,并以机器可读的方式存入主机借口中。Cmd>ipconfig/all  ,Plysical Address的这一行,其后所表现的地址即为该设备的MAC地址。

每一个网络设备(网卡,路由器)都有自己的物理地址(MAC地址),这是全球唯一的,可以保证不同网络设备间的精确通信。

介质访问控制(Media Access Control)地址一般位于网卡中,用于标识网络设备,控制对网络介质的访问。例如,网络设备要访问传输电缆(网线,位于物理层),必须具有一个MAC地址,发送的数据要达到目的地,必须知道目的地的MAC地址。因为一个网卡拥有唯一的MAC地址,所以又叫做物理地址。

端口

在网络技术中,端口(Port)大致有两种意思:一是物理意义上的端口,比如,ADSL Modem、集线器、交换机、路由器用于连接其他网络设备的接口,如RJ-45端口、SC端口等等。二是逻辑意义上的端口,一般是指TCP/IP协议中的端口,端口号的范围从065535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。我们这里将要分析的就是逻辑意义上的端口。 

查看端口: cmd->netstat -a -n,查看TCPUDP链接的端口号及状态 
关闭端口:如关闭SMTP服务的25端口,可以这样做:首先打开控制面板,双击管理工具,再双击服务。接着在打开的服务窗口中找到并双击“Simple Mail Transfer Protocol SMTP服务,单击停止按钮来停止该服务,然后在启动类型中选择已禁用,最后单击肯定按钮即可。这样,关闭了SMTP服务就相当于关闭了对应的端口。
开启端口:如果要开启该端口只要先在启动类型选择自动,单击肯定按钮,再打开该服务,在服务状态中单击启动按钮即可启用该端口,最后,单击肯定按钮即可。 

端口分类:逻辑意义上的端口有多种分类标准,上面将分析两种罕见的分类:
1. 按端口号分布划分
1)知名端口(Well-Known Ports
知名端口即众所周知的端口号,范围从01023,这些端口号一般牢固分配给一些服务。比如21端口分配给FTP服务,25端口分配给SMTP(简单邮件传输协议)服务,80端口分配给HTTP服务,135端口分配给RPC(远程过程调用)服务等等。
2)动态端口(Dynamic Ports
动态端口的范围从102465535,这些端口号一般不牢固分配给某个服务,也就是说很多服务都可以应用这些端口。只要运行的程序向系统提出访问网络的请求,那么系统就可以从这些端口号中分配一个供该程序应用。比如1024端口就是分配给第一个向系统发出请求的程序。在关闭程序进程后,就会释放所占用的端口号。
不过,动态端口也常常被病毒木马程序所利用,如冰河默认连接端口是7626WAY 2.48011Netspy 3.07306YAI病毒是1024等等。

文章结束给大家分享下程序员的一些笑话语录: 面试官:熟悉哪种语言
应聘者:JAVA
面试官:知道什么叫类么
应聘者:我这人实在,工作努力,不知道什么叫累
面试官:知道什么是包?
应聘者:我这人实在 平常不带包 也不用公司准备了
面试官:知道什么是接口吗?
应聘者:我这个人工作认真。从来不找借口偷懒
面试官:知道什么是继承么
应聘者:我是孤儿没什么可以继承的
面试官:知道什么叫对象么?
应聘者:知道,不过我工作努力,上进心强,暂时还没有打算找对象。
面试官:知道多态么?
应聘者:知道,我很保守的。我认为让心爱的女人为了自已一时的快乐去堕胎是不道德的行为!请问这和C#有什么关系??

原文地址:https://www.cnblogs.com/jiangu66/p/3091864.html