linux网络编程之TCP/IP基础篇(一)

  从今天起,将会接触到网络编程,平台是linux,实现语言C语言,最后将会实现一个简易的miniftp服务器。

  主要的内容安排为:linux网络编程之TCP/IP基础篇,SOCKET编程篇,进程间通信篇,线程篇,实战ftp篇。

  1.ISO/OSI参考模型:open system interconnection开放系统互联模型是由OSI(international organization for standardization )国际标准化组织定义的
网络分层模型,共七层。

  各层的具体含义:
  物理层(Physical Layer):物理层定义了所有电子及物理设备的规范,为上层的传输提供了一个物理介质,本层中数据传输的单位为比特b。属于本层定义的规范有EIA/TIA RS-232,EIA/TIA RS-449,V.35,RJ-45等,实际使用中的设备如网卡等属于本层。
  数据链路层(Data Link Layer):对物理层收到的比特流数据封装成帧。提供可靠的数据传输服务,实现误差错的数据传输,在数据链路层中的数据单位为帧frame,属于本层定义的规范有SDLC,HDLC,PPP,STP,帧中继等,实际中使用的设备如switch交换机属于本层。
  网络层(Network Layer):网络层负责将各个子网之间的数据进行路由选择,分组与重建,本层中数据传输的单位为数据包(package),属于本层中定义的规范有IP,IPX,RIP,OSPF,ICMP,IGMP等,实际中使用的设备如路由器属于本层。
  传输层(Transport Layer):提供可靠的数据传输服务,它检测路由器丢弃的包,然后产生一个重传请求,能够将乱序收到的数据包重新排序。
  会话层(Session Layer):管理主机之间会话过程,包括会话建立,终止和会话过程中的管理。
  表示层(Presentation Layer):表示层对网络传输的数据进行交换,使得多个主机之间传送的信息能够相互理解,包括数据的压缩,加密,格式转换等
  应层(Application Layer):应用层与应用程序界面沟通,以达至展示给用户的目的,在此常见的协定有:HTTP,HTTPS,FTP,TELNET,SSH,SMTP,POP3

  2.OSI和邮件发送(用邮件发送的过程模拟OSI协议)

  3.TCP/IP四层模型

  

  4.TCP/IP四层模型中重要的协议

  

  5.TCP/IP四层模型的实例

            

  6.对等通信

    对等通信:相同层比如传输层和传输层的通信看似是直接通信的,就是说的对等通信,其实是建立在其他层通信协作的基础上的。

    实际上TCP/IP可以看成一个协议栈,数据从A端经过FTP,TCP,IP,以太网驱动程序逐步打包,然后到B端的以太网驱动程序,经过IP,TCP,FTP又逐步的解包。

    7.封装

   

  总结:

   本篇文章主要讲了ISO/OSI参考模型,TCP/IP四层模型,以及一些基本概念(对等通信,封装,分用,端口)

时间: 2024-08-02 11:03:21

linux网络编程之TCP/IP基础篇(一)的相关文章

黑马程序员—网络编程之TCP(基础篇)

--Java培训.Android培训.iOS培训..Net培训.期待与您交流! -- 服务端:ServerSocket ss=new ServerSocket(10010); 获取Socket对象 Socket s=ss.accept(); 通过Socket对象获取输入输出流发送消息 客服端:Socket s=new Socket("localhost",10010); 通过Socket对象获取输入输出流发送消息 一 package com.itheima.cn; import jav

网络编程之TCP/IP各层详解

网络编程之TCP/IP各层详解 我们将应用层,表示层,会话层并作应用层,从TCP/IP五层协议的角度来阐述每层的由来与功能,搞清楚了每层的主要协议,就理解了整个物联网通信的原理. 首先,用户感知到的只是最上面一层--应用层,自上而下每层都依赖于下一层,所以我们从最下层开始切入,比较好理解. 每层都运行特定的协议,越往上越靠近用户,越往下越靠近硬件. 一.物理层 由来:孤立的计算机之间要一起"玩耍",就必须接入Internet,即计算机之间必须完成组网. 物理层功能:主要是基于电器特性发

扯谈网络编程之Tcp SYN flood洪水攻击

简介 TCP协议要经过三次握手才能建立连接: (from wiki) 于是出现了对于握手过程进行的攻击.攻击者发送大量的FIN包,服务器回应(SYN+ACK)包,但是攻击者不回应ACK包,这样的话,服务器不知道(SYN+ACK)是否发送成功,默认情况下会重试5次(tcp_syn_retries).这样的话,对于服务器的内存,带宽都有很大的消耗.攻击者如果处于公网,可以伪造IP的话,对于服务器就很难根据IP来判断攻击者,给防护带来很大的困难. 攻与防 攻击者角度 从攻击者的角度来看,有两个地方可以

linux网络编程之shutdown() 与 close()函数详解

linux网络编程之shutdown() 与 close()函数详解 参考TCPIP网络编程和UNP: shutdown函数不能关闭套接字,只能关闭输入和输出流,然后发送EOF,假设套接字为A,那么这个函数会关闭所有和A相关的套接字,包括复制的:而close能直接关闭套接字. 1.close()函数 [cpp] view plain copy print? <span style="font-size:13px;">#include<unistd.h> int 

java网络编程之TCP实例

Dgram类 package Socket; import java.net.DatagramPacket; import java.net.InetAddress; public class Dgram { public static DatagramPacket toDatagram(String s, InetAddress destIA, int destPort) { byte[] buf = new byte[s.length() + 1]; s.getBytes(0, s.leng

网络编程之TCP编程

html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption

Linux网络编程之socket相关结构体

Linux中的网络编程是通过 Socket (套接字)实现. Socket有三种类型: 流式套接字(SOCK_STREAM) 流式套接字可以提供可靠的.面向连接的通讯流,它使用TCP协议.TCP保证了数据传输的正确性和顺序性. 数据报套接字(SOCK_DGRAM) 数据报套接字定义了一种无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不保证可靠,无差错,它使用数据报协议UDP. 原始套接字(SOCK_RAM) 原始套接字允许使用IP协议,主要用于新的网络协议的测试等. Socket

(10)Linux 网络编程之ioctl函数

1.介绍 Linux网络程序与内核交互的方法是通过ioctl来实现的,ioctl与网络协议栈进行交互,可得到网络接口的信息,网卡设备的映射属性和配置网络接口.并且还能够查看,修改,删除ARP高速缓存的信息,所以,我们有必要了解一下ioctl函数的具体实现. 2.相关结构体与相关函数 #include int ioctl(int d,int request,....); 参数: d-文件描述符,这里是对网络套接字操作,显然是套接字描述符 request-请求码 省略的部分对应不同的内存缓冲区,而具

【Unity3D自学记录】网络编程之TCP&amp;UDP的区别

TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接.一个TCP连接必须要经过三次"对话"才能建立起来,其中的过程非常复杂,我们这里只做简单.形象的介绍,你只要做到能够理解这个过程即可.我们来看看这三次对话的简单过程:主机A向主机B发出连接请求数据包:"我想给你发数据,可以吗?",这是第一次对话:主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在