網(wǎng)絡(luò)

13.服務(wù)器圖片改了唉锌,url沒有變脚草,需求,服務(wù)器的圖片變了田轧,就從服務(wù)器加載圖片舟奠,如果服務(wù)器的沒變竭缝,就從本地加載

1.請求要是可變的,緩存策略要是每次從服務(wù)器加載.
2.記錄每次響應(yīng)的etag
3.在下次發(fā)送請求時,將etag發(fā)送給服務(wù)器. 由服務(wù)器判斷內(nèi)容有沒有發(fā)生改變.如果沒有發(fā)生改變,則不會將數(shù)據(jù)返回給客戶端,如果變了沼瘫,就返回抬纸。

#import "ViewController.h"

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *iconView;
/**
 *  記錄響應(yīng)的etag
 */
@property (nonatomic, copy) NSString *etag;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
}

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event  {
    // URL
    NSURL *url = [NSURL URLWithString:@"http://localhost/itcast/images/head1.png"];
    
    // Request
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:15.0];
    
    // 通過請求對象將etag發(fā)送給服務(wù)器
    if (self.etag) {
        [request setValue:self.etag forHTTPHeaderField:@"If-None-Match"];
    }
    
    // 默認(rèn)就是GET請求
    NSLog(@"request.HTTPMethod = %@",request.HTTPMethod);
    
    // 發(fā)送請求
    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {
        
        NSLog(@"%@---%zd",response,data.length);
        
        //httpResponse為子類屬性,把response強轉(zhuǎn)成NSHTTPURLResponse
        NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
        
        // 獲得響應(yīng)的etag
        self.etag =  httpResponse.allHeaderFields[@"Etag"];
        
        // 判斷狀態(tài)碼是否是304: 服務(wù)端的數(shù)據(jù)和本地的是一樣的耿戚,服務(wù)器的內(nèi)容沒有發(fā)生變化
        if (httpResponse.statusCode == 304) {
            
            NSLog(@"加載本地數(shù)據(jù)");
            
            // 根據(jù)請求對象獲得對應(yīng)的緩存響應(yīng)對象
            NSCachedURLResponse *cacheResponse = [[NSURLCache sharedURLCache] cachedResponseForRequest:request];
            
            // 獲得緩存數(shù)據(jù)
            data = cacheResponse.data;
        }
        
        NSLog(@"etag = %@",self.etag);
        
        // 將二進制數(shù)據(jù)轉(zhuǎn)換成UIImage
        UIImage *image = [UIImage imageWithData:data];
        
        // 顯示圖片
        self.iconView.image = image;
    }];
}

@end

12湿故、寫出四個不同的http返回狀態(tài)碼以及分別所代表的意思。
404表示請求的資源不存在


8膜蛔、常用的數(shù)據(jù)格式是JSON還是XML坛猪,分別用哪些即時方式,優(yōu)缺點是什么皂股?

答:
XML目前設(shè)計了兩種解析方式:DOM和 SAX墅茉。
JSON只提供整體解析方案

XML的優(yōu)點:.格式統(tǒng)一,符合標(biāo)準(zhǔn)呜呐;數(shù)據(jù)共享比較方便就斤。
XML的缺點: 文件龐大,文件格式復(fù)雜蘑辑,傳輸占帶寬洋机;

JSON的優(yōu)點:數(shù)據(jù)格式比較簡單,易于讀寫,易于解析
JSON的缺點:沒有XML那么通用性

9洋魂、實現(xiàn)或使用過哪些加密算法绷旗?

答:
對稱加密算法 DES, 3DES, AES
非對稱加密算法: RSA, DSA, ECC

323喜鼓、TCP/IP通信建立的過程怎樣,端口有什么作用衔肢?

答:
發(fā)出將建立通信會話的第一個數(shù)據(jù)包之前庄岖,發(fā)送方主機上的TCP/IP協(xié)議執(zhí)行以下四個不同的步驟:

1.TCP/IP將主機名或NetBIOS名稱解析為IP地址。
2.使用目標(biāo)IP地址和IP路由表膀懈,TCP/IP確定要使用的接口和下一躍點IP地址顿锰。
3.對于共享訪問技術(shù)(例如谨垃,以太網(wǎng)启搂、令牌環(huán)和分布式光纖數(shù)據(jù)接口(FDDI))上的單播IP流量,地址解析協(xié)議(ARP)將下一躍點IP地址解析為媒體訪問控制(MAC)地址(也稱為數(shù)據(jù)鏈接層地址)刘陶。

對于以太網(wǎng)和FDDI上的多播IP流量胳赌,目標(biāo)多播IP地址會被映射到相應(yīng)的多播MAC地址。對于令牌環(huán)上的多播IP流量匙隔,使用功能地址0xC0-00-00-04-00-00疑苫。對于共享訪問技術(shù)上的廣播流量,MAC地址會被映射到0xFF-FF-FF-FF-FF-FF纷责。4.之后捍掺,IP數(shù)據(jù)報會被發(fā)送到通過ARP解析的MAC地址、多播映射或MAC級廣播地址再膳。

網(wǎng)絡(luò)訪問要通過不同的協(xié)議進行挺勿,各種協(xié)議要通過不同的端口進行訪問,如25端口是郵件端口喂柒,3389超級終端(就是木馬程序最想打開的端口)不瓶,8000=騰訊OICQ服務(wù)器端等等很多很多,記住常用的幾個就可以了灾杰。

端口:說白了就相當(dāng)于門,每個門都對應(yīng)著相對的TCP/IP

318蚊丐、簡要說下Http通信協(xié)議的原理,與Socket協(xié)議的區(qū)別有哪些艳吠?

答:
HTTP協(xié)議:簡單對象訪問協(xié)議麦备,對應(yīng)于應(yīng)用層,HTTP協(xié)議是基于TCP連接的
tcp協(xié)議:對應(yīng)于傳輸層
ip協(xié)議:對應(yīng)于網(wǎng)絡(luò)層
TCP/IP是傳輸層協(xié)議昭娩,主要解決數(shù)據(jù)如何在網(wǎng)絡(luò)中傳輸凛篙;而HTTP是應(yīng)用層協(xié)議,主要解決如何包裝數(shù)據(jù)题禀。
Socket是對TCP/IP協(xié)議的封裝鞋诗,Socket本身并不是協(xié)議,而是一個調(diào)用接口(API)迈嘹,通過Socket削彬,才能使用TCP/IP協(xié)議全庸。
http連接:http連接就是所謂的短連接,即客戶端向服務(wù)器端發(fā)送一次請求融痛,服務(wù)器端響應(yīng)后連接即會斷掉壶笼;
socket連接:socket連接就是所謂的長連接,理論上客戶端和服務(wù)器端一旦建立起連接將不會主動斷掉雁刷;但是由于各種環(huán)境因素可能會是連接斷開覆劈,比如說:服務(wù)器端或客戶端主機down了,網(wǎng)絡(luò)故障沛励,或者兩者之間長時間沒有數(shù)據(jù)傳輸责语,網(wǎng)絡(luò)防火墻可能會斷開該連接以釋放網(wǎng)絡(luò)資源。

309目派、請寫出同步網(wǎng)絡(luò)請求和異步網(wǎng)絡(luò)請求函數(shù)坤候。

答:首先在ios模擬器上創(chuàng)建一個text窗口(我起名叫tongbu):
//同步網(wǎng)絡(luò)請求函數(shù)
//獲取名叫tongbu文本框的內(nèi)容
NSString *txt=self.tongbu.text;
//創(chuàng)建url對象
NSURL *url=[NSURLURLWithString:txt];
//創(chuàng)建請求對象
NSURLRequest *req=[NSURLRequest requestWithURL:url];
//發(fā)起同步,趕回數(shù)據(jù)給data
NSData*data=[NSURLConnection sendSynchronousRequest:req returningResponse:nilerror:nil];
//異步網(wǎng)絡(luò)請求

在ViewController.m文件上的- (void)viewDidLoad方法里
NSString*txt2=self.tongbu.text;
//創(chuàng)建url對象
NSURL *url2=[NSURLURLWithString:txt2];
//創(chuàng)建請求對象
NSURLRequest*req2=[NSURLRequest requestWithURL:url2];
//發(fā)送請求并建立一個代理
[NSURLConnectionconnectionWithRequest:req2 delegate:self];
//因為代理人是自己所以讓自己遵守協(xié)議

協(xié)議在ViewController.h文件里
@interface ViewController :
UIViewController//因為代理對象是對象所以讓自己遵守協(xié)議
//同時創(chuàng)建一個NSMutableData類型的對象來接從網(wǎng)絡(luò)上接收的數(shù)據(jù)企蹭,同時創(chuàng)建3個協(xié)議方法來進行接收數(shù)據(jù)
@property(retain,nonatomic)NSMutableData*data;

//協(xié)議方法
//1連接接收響應(yīng)白筹,表示成功建立連接
-(void)connection:(NSURLConnection*)connection didReceiveResponse:(NSURLResponse *)response{
    self.data=[[NSMutableData alloc]init];//創(chuàng)建代理對象,并初始化數(shù)據(jù)
}

//2連接接收數(shù)據(jù)
//形參(NSData *)表示接收到的數(shù)據(jù)
-(void)connection:(NSURLConnection*)connection didReceiveData:(NSData *)data{
    [self.data appendData:data];//向data反復(fù)添加數(shù)據(jù)
}

//3連接成功
-(void)connectionDidFinishLoading:(NSURLConnection*)connection{
    NSLog(@"連接成功");
}

230.網(wǎng)絡(luò)通信用過哪些方式?


1谅摄、使用socket的方式進行通信徒河。
2、使用asynsocket類庫進行通信送漠。

178.常用的XML文件的解析方式有哪些顽照?它們各自的區(qū)別是什么?

1)有兩種解析方式:DOM解析與SAX解析螺男。
2)DOM解析必須先完成DOM樹的創(chuàng)建棒厘,在處理規(guī)模較大XML文檔時就很耗內(nèi)存,占用資源較多下隧。
3)與DOM不同奢人,SAX是用事件驅(qū)動模型,解析XML時每遇到一個開始或結(jié)束標(biāo)簽淆院、或者屬性何乎、或者一條指令時,程序就會產(chǎn)生一個事件進行相應(yīng)的處理土辩,因此支救,SAX相對于DOM來說更適合操作較大的XML文檔

132.網(wǎng)絡(luò)通信用過哪些方式?

(附網(wǎng)址:http://blog.csdn.net/chang6520/article/details/7967698)
同樣也是代碼解釋
iOS設(shè)備的網(wǎng)絡(luò)通信的方法,有如下兩個大類:
1拷淘、使用socket的方式進行通信各墨。
以TCP為利,對于TCP來說启涯,是要區(qū)分服務(wù)端和客戶端的贬堵。服務(wù)端:通常的方法是服務(wù)端啟動后監(jiān)聽恃轩,是否有客戶端連接,如果有連接黎做,則建立與客戶端的通信叉跛。客戶端的方法通常是連接服務(wù)端蒸殿,當(dāng)連接成功之后筷厘,就希望發(fā)送數(shù)據(jù)了。

2宏所、使用asynsocket類庫進行通信酥艳。

133.如何處理多個網(wǎng)絡(luò)請求并發(fā)的情況?

答:
(附網(wǎng)址:http://www.cnblogs.com/yanhuaxuanlan/p/4683557.html)
答案都是代碼,大家可以打開網(wǎng)址仔細閱讀
1.并發(fā)當(dāng)有多個線程在操作時,如果系統(tǒng)只有一個CPU,則它根本不可能真正同時進行一個以上的線程,它只能把CPU運行時間劃分成若干個時間段,再將時間段分配給各個線程執(zhí)行楣铁,在一個時間段的線程代碼運行時玖雁,其它線程處于掛起狀。.這種方式我們稱之為并發(fā)(Concurrent)盖腕。

2.并行當(dāng)系統(tǒng)有一個以上CPU時,則線程的操作有可能非并發(fā)。當(dāng)一個CPU執(zhí)行一個線程時浓镜,另一個CPU可以執(zhí)行另一個線程溃列,兩個線程互不搶占CPU資源,可以同時進行膛薛,這種方式我們稱之為并行(Parallel)听隐。

3.區(qū)別并發(fā)和并行是即相似又有區(qū)別的兩個概念,并行是指兩個或者多個事件在同一時刻發(fā)生哄啄;而并發(fā)是指兩個或多個事件在同一時間間隔內(nèi)發(fā)生雅任。

62.網(wǎng)絡(luò)圖片處理問題中怎么解決一個相同的網(wǎng)絡(luò)地址重復(fù)請求的問題?

答案:利用字典圖片地址為key,下載操作為value

55.NSURLSession在什么情況下會存在循環(huán)引用的問題,怎么解決?

答:
(1)在使用NSURLSession簽訂其代理的時候會存在循環(huán)引用問題咨跌,因為其代理是retain強引用
(2)解決方案
(1)在下載完成后取消NSURLSession會話并釋放Session沪么,賦值為nil。
(2)再視圖將要消失時也執(zhí)行同樣的操作锌半。為了防止沒有下載完成就跳轉(zhuǎn)控制器禽车。

具體如下:
/**視圖將要消失的時候,取消session*/
- (void)viewWillDisappear:(BOOL)animated
{
    [superviewWillDisappear:animated];
    //任務(wù)完成刊殉,取消NSURLSession
    [self.sessioninvalidateAndCancel];
    //釋放會話
    self.session =nil;
}

56.如何自己實現(xiàn)GET緩存?

答:
1.使用GET請求數(shù)據(jù)
2.iOS系統(tǒng)SDK已經(jīng)做好了緩存殉摔。需要的僅僅是設(shè)置下內(nèi)存緩存大小、磁盤緩存大小记焊、以及緩存路徑,代碼如下:
NSURLCache *urlCache = [[NSURLCache alloc] initWithMemoryCapacity:4 * 1024 * 1024 diskCapacity:20 * 1024 * 1024 diskPath:nil];
[NSURLCache setSharedURLCache:urlCache];

58.如果提交一個Json格式的數(shù)據(jù)給后臺服務(wù)器,后臺服務(wù)器返回的是一段普通文字,用NSURLConnection/NSURLSession/AFN分別如何實現(xiàn)?

答:
1.使用NSURLConnection發(fā)送請求的步驟很簡單
(1)創(chuàng)建一個NSURL對象逸月,設(shè)置請求路徑(設(shè)置請求路徑)
(2)傳入NSURL創(chuàng)建一個NSURLRequest對象,設(shè)置請求頭和請求體(創(chuàng)建請求對象)
(3)使用NSURLConnection發(fā)送NSURLRequest(發(fā)送請求)

2.使用NSURLSession發(fā)送請求的步驟很簡單
1)確定請求路徑(一般由公司的后臺開發(fā)人員以接口文檔的方式提供)遍膜,GET請求參數(shù)直接跟在URL后面
2)創(chuàng)建請求對象(默認(rèn)包含了請求頭和請求方法【GET】)碗硬,此步驟可以省略
3)創(chuàng)建會話對象(NSURLSession)
4)根據(jù)會話對象創(chuàng)建請求任務(wù)(NSURLSessionDataTask)
5)執(zhí)行Task
6)當(dāng)?shù)玫椒?wù)器返回的響應(yīng)后腐缤,解析數(shù)據(jù)(XML|JSON|HTTP)

59.請描述一下SDWebImage內(nèi)部實現(xiàn)的原理

答:SDWebImage底層實現(xiàn)有沙盒緩存機制,主要由三塊組成
1肛响、內(nèi)存圖片緩存
2岭粤、內(nèi)存操作緩存
3、磁盤沙盒緩存

118.網(wǎng)絡(luò)通信用過哪些方式特笋?

解: ios設(shè)備的網(wǎng)絡(luò)通信的方法剃浇,有如下兩個大類:
1、使用socket的方式進行通信猎物。
2虎囚、使用asynsocket類庫進行通信。

119.如何處理多個網(wǎng)絡(luò)請求并發(fā)的情況蔫磨?

解: //了解(并發(fā))當(dāng)有多個線程在操作時,如果系統(tǒng)只有一個CPU,則它根本不可能真正同時進行一個以上的線程淘讥,它只能把CPU運行時間劃分成若干個時間段,再將時間段分配給各個線程執(zhí)行,在一個時間段的線程代碼運行時堤如,其它線程處于掛起狀蒲列。.這種方式我們稱之為并發(fā)(Concurrent)。
遇到這種情況建議使用第三方的網(wǎng)絡(luò)庫搀罢。比如AFNetworking蝗岖。也可以通過GCD和NSOperationQueue來控制并發(fā)

5、在網(wǎng)絡(luò)請求中如何提高性能榔至?

1.減少請求帶寬-JSON和XML是常見的請求與響應(yīng)提的編碼方式抵赢。壓縮模式的效率在很大程序上取決于待壓縮的數(shù)據(jù),通常情況下JSON更高效
2.降低請求延遲
3.避免網(wǎng)絡(luò)請求-利用緩存機制唧取,緩存的內(nèi)容就不要再次請求了

6铅鲤、如何保證數(shù)據(jù)安全性(請求和存儲)?

對稱加密枫弟,非對稱加密邢享。

6、發(fā)送10個網(wǎng)絡(luò)請求媒区,然后再接收到所有回應(yīng)之后執(zhí)行后續(xù)操作驼仪,如何實現(xiàn)?

使用dispatch_group_t袜漩,開始一個任務(wù)enter绪爸,結(jié)束一個任務(wù)release,完成之后回調(diào)notify
dispatch_group_t queueGroup = dispatch_group_create();
dispatch_group_enter(queueGroup);
dispatch_group_leave(queueGroup);
dispatch_group_notify(queueGroup, dispatch_get_main_queue(), ^{
...........
});

10宙攻、發(fā)送10個網(wǎng)絡(luò)請求奠货,然后再接收到所有回應(yīng)之后執(zhí)行后續(xù)操作,如何實現(xiàn)座掘?

參考答案:
從題目分析可知递惋,10個請求要全部完成后柔滔,才執(zhí)行某一功能。比如萍虽,下載10圖片后合成一張大圖睛廊,就需要異步全部下載完成后,才能合并成大圖杉编。
做法:通過dispatch_group_t來實現(xiàn)超全,將每個請求放入到Group中,將合并成大圖的操作放在dispatch_group_notify中實現(xiàn)邓馒。
dispatch_queue_tqueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_group_tgroup = dispatch_group_create();
dispatch_group_async(group, queue, ^{ /*加載圖片1 */ });
dispatch_group_async(group, queue, ^{ /*加載圖片2 */ });
dispatch_group_async(group, queue, ^{ /*加載圖片3 */ });
dispatch_group_notify(group, dispatch_get_main_queue(), ^{
    // 合并圖片
});

6嘶朱、TCP和UDP的區(qū)別是什么?

TCP:傳輸控制協(xié)議光酣、 有鏈接的疏遏、可靠的、
UDP:用戶數(shù)據(jù)報協(xié)議救军、無鏈接的财异、不可靠、

8缤言、TCP和UDP的區(qū)別是什么宝当?

參考答案:

  • TCP:面向連接、傳輸可靠(保證數(shù)據(jù)正確性胆萧,保證數(shù)據(jù)順序傳輸)、用于傳輸大量數(shù)據(jù)(流模式)俐东、速度慢跌穗,建立連接需要開銷較多(時間,系統(tǒng)資源)虏辫。
  • UDP:面向非連接蚌吸、傳輸不可靠、用于傳輸少量數(shù)據(jù)(數(shù)據(jù)包模式)砌庄、速度快羹唠,傳輸?shù)氖菆笪摹?/li>

6、MD5和Base64的區(qū)別是什么娄昆,各自場景是什么佩微?

參考:http://www.cnblogs.com/XL-Sunny/p/5614012.html
MD5: 不可逆、消息完整性保護萌焰。用于:1哺眯、一次性驗證。2.安全訪問認(rèn)證扒俯。3奶卓、數(shù)字證書
Base64: 可逆一疯、是一種編碼方式,主要作用不是加密夺姑,是用來避免‘字節(jié)’中不能轉(zhuǎn)換成可顯示字符的數(shù)值墩邀,將二進制數(shù)據(jù)轉(zhuǎn)換成文本數(shù)據(jù),方便使用HTTP協(xié)議等盏浙。使用場合:表示眉睹、傳輸、儲存一些二進制數(shù)據(jù)只盹。

9辣往、MD5和Base64的區(qū)別是什么,各自使用場景是什么殖卑?

參考答案:
做過加密相關(guān)的功能的站削,幾乎都會使用到MD5和Base64,它們兩者在實際開發(fā)中是最常用的孵稽。

  • MD5:是一種不可逆的摘要算法许起,用于生成摘要,無法逆著破解得到原文菩鲜。常用的是生成32位摘要园细,用于驗證數(shù)據(jù)的有效性。比如接校,在網(wǎng)絡(luò)請求接口中猛频,通過將所有的參數(shù)生成摘要,客戶端和服務(wù)端采用同樣的規(guī)則生成摘要蛛勉,這樣可以防篡改鹿寻。又如,下載文件時诽凌,通過生成文件的摘要毡熏,用于驗證文件是否損壞。
  • Base64:屬于加密算法侣诵,是可逆的痢法,經(jīng)過encode后,可以decode得到原文杜顺。在開發(fā)中财搁,有的公司上傳圖片采用的是將圖片轉(zhuǎn)換成base64字符串,再上傳哑舒。在做加密相關(guān)的功能時妇拯,通常會將數(shù)據(jù)進行base64加密/解密。

6、網(wǎng)絡(luò)通信用過哪些方式(100%的人說了AFNetworking...)

TCP
HTTP
HTTPS
UDP
Socket

6越锈、如何處理多個網(wǎng)絡(luò)請求并發(fā)的情況

參考:http://www.cnblogs.com/yanhuaxuanlan/p/4683557.html
用信號量仗嗦,dispatch_semaphore_t

6、在網(wǎng)絡(luò)請求中如何提高性能

1.減少請求帶寬-JSON和XML是常見的請求與響應(yīng)提的編碼方式甘凭。壓縮模式的效率在很大程序上取決于待壓縮的數(shù)據(jù)稀拐,通常情況下JSON更高效
2.降低請求延遲
3.避免網(wǎng)絡(luò)請求-利用緩存機制,緩存的內(nèi)容就不要再次請求了
<不是很懂>

6丹弱、在網(wǎng)絡(luò)請求中如何保證安全性

參考:http://blog.csdn.net/jt521xlg/article/details/49717571
1.用戶post請求德撬,不直接暴露參數(shù)信息
2.重要的數(shù)據(jù),要加密躲胳,常見的MD5(不可逆)蜓洪,AES(可逆)
3.非重要的數(shù)據(jù),要簽名
4.利用token校驗時效性

12坯苹、常見的Http狀態(tài)碼有哪些隆檀?

參考答案:

  • 302是請求重定向。
  • 500及以上是服務(wù)器錯誤粹湃,如503表示服務(wù)器找不到恐仑、3840表示服務(wù)器返回?zé)o效JSON。
  • 400及以上是請求鏈接錯誤或者找不到服務(wù)器为鳄,如常見的404裳仆。
  • 200及以上是正確,如常見的是200表示請求正常孤钦。
  • 100及以上是請求接受成功歧斟。

更詳細請閱讀: Http狀態(tài)碼詳細說明

13、iOS與H5交互的方式有哪些偏形?

參考答案:

  • 通過協(xié)議在shouldStartRequest中捕獲請求构捡,獲取scheme來判斷預(yù)先定義的功能,然后調(diào)用native代碼壳猜。比如,定義點擊圖片調(diào)用native來展示大圖滑凉,那么js接收到點擊時统扳,重定向?qū)D片的url添加上自定義scheme,如HYBImagePreview://這樣畅姊。更詳細請閱讀我的文章:Swift版咒钟、 Objective-C版本
  • 通過iOS7以后引入的JavascriptCore框架來實現(xiàn),通過注入對象的方式來實現(xiàn)若未,維護起來更簡單朱嘴。更詳細請閱讀我的文章:Oc版本與JS交互、Swift版與JS交互、如何使用的是WKWebView萍嬉,可閱讀WKWebView與JS交互
  • 通過WebViewJavascriptBridge這個第三方庫來實現(xiàn)乌昔,具體百度吧!

10壤追、下面請求數(shù)據(jù)用了什么協(xié)議磕道,請求的數(shù)據(jù)格式是什么?

UIWebView *webView=[[UIWebView alloc] initWithFrame:self.view.frame];
[webView loadRequest:[NSURLRequest request WithURL:[NSURLURL WithString:http:@"http://pzpromop.s3.amazonaws.com/PromoNeutral.html"]]];
[self.view addSubview:webView];

使用了http協(xié)議請求的是html格式的數(shù)據(jù)

13 想傳輸一張圖片行冰,可以用什么協(xié)議傳輸溺蕉?

答 可以用http ftp等協(xié)議。

4悼做、如何處理多個網(wǎng)絡(luò)請求并發(fā)的情況疯特?

http://www.cnblogs.com/yanhuaxuanlan/p/4683557.html
1.并發(fā)當(dāng)有多個線程在操作時,如果系統(tǒng)只有一個CPU,則它根本不可能真正同時進行一個以上的線程肛走,它只能把CPU運行時間劃分成若干個時間段,再將時間段分配給各個線程執(zhí)行漓雅,在一個時間段的線程代碼運行時,其它線程處于掛起狀羹与。這種方式我們稱之為并發(fā)(Concurrent)故硅。

2.并行當(dāng)系統(tǒng)有一個以上CPU時,則線程的操作有可能非并發(fā)纵搁。當(dāng)一個CPU執(zhí)行一個線程時吃衅,另一個CPU可以執(zhí)行另一個線程,兩個線程互不搶占CPU資源腾誉,可以同時進行徘层,這種方式我們稱之為并行(Parallel)。

3.區(qū)別并發(fā)和并行是即相似又有區(qū)別的兩個概念,并行是指兩個或者多個事件在同一時刻發(fā)生;而并發(fā)是指兩個或多個事件在同一時間間隔內(nèi)發(fā)生劫扒。

5.請簡述你對緩存的實現(xiàn)和管理

要用到緩存的話照皆,無非就是為了節(jié)約用戶的流量,讓我們程序響應(yīng)快茸炒。那么,緩存又有兩個了,一個內(nèi)存緩存西傀,一個銀盤緩存,其實就是桶癣,第一檢測有無內(nèi)存緩存拥褂,有就加載,如果沒有內(nèi)存緩存牙寞,那就去看銀盤的一個緩存饺鹃,如有有就加載,沒有,請求服務(wù)器悔详。

在第一次請求數(shù)據(jù)時镊屎,內(nèi)存緩存中沒有數(shù)據(jù),硬盤緩存中沒有數(shù)據(jù)伟端,那就要把服務(wù)器返回的放入內(nèi)存緩存中去杯道,再寫入硬盤,也可以叫做沙盒了

怎么實現(xiàn)的話责蝠,其實就是NSURLCache類緩存數(shù)據(jù)

緩存的注意事項:經(jīng)常更新:不能用緩存党巾!比如股票、彩票數(shù)據(jù)一成不變:果斷用緩存霜医。偶爾更新:可以定期更改緩存策略 或者 清除緩存齿拂。如果大量使用緩存,會越積越大肴敛,建議定期清除緩存

1署海、如何使應(yīng)用程序在后臺保持socket長連接?

通過設(shè)置以下屬性可以保持socket連接和數(shù)據(jù)的繼續(xù)傳輸:
1.需要在Info.plist文件中添加UIBackgroundModes中的VOIP鍵值医男;
2.設(shè)置流屬性
    CFReadStreamRef和CFWriteStreamRef通過如下方法設(shè)置kCFStreamNetworkServiceType屬性為kCFStreamNetworkServiceTypeVoIP砸狞;
    CFReadStreamSetProperty(theReadStream, kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP);
    CFWriteStreamSetProperty(theWriteStream, kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP);
    NSInputStream 和NSOutputStream通過如下方法設(shè)置NSStreamNetworkServiceType屬性為NSStreamNetworkServiceTypeVoIP;
    [self.stream setProperty: NSStreamNetworkServiceTypeVoIP forKey:NSStreamNetworkServiceType];
3.這里有一個問題镀梭,就是客戶端是通過心跳來和服務(wù)端保持連接刀森,心跳是由定時器觸發(fā)的,當(dāng)我退到后臺以后报账,定時器方法被掛起研底,那么通過如下設(shè)置來在后臺運行定時器
    - (void)applicationDidEnterBackground:(UIApplication *)application{
        UIApplication *app = [UIApplication sharedApplication];
        __block UIBackgroundTaskIdentifier bgTask;
        bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
            dispatch_async(dispatch_get_main_queue(), ^{
                if (bgTask != UIBackgroundTaskInvalid)
                {
                    bgTask = UIBackgroundTaskInvalid;
                }
            });
        }];
        
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
            dispatch_async(dispatch_get_main_queue(), ^{
                if (bgTask != UIBackgroundTaskInvalid)
                {
                    bgTask = UIBackgroundTaskInvalid;
                }
            });
        });
    }

152.Do you use SDWebImage? If yes, why doyou choose this library? If no, how do you load an image from Internet to anUIImageView?
翻譯:你使用SDWebImage嗎?如果使用透罢,你為什么使用這個庫榜晦,如果不使用,你是怎樣加載一張網(wǎng)絡(luò)圖片的羽圃?

答案:這個類庫提供一個UIImageView類別以支持加載來自網(wǎng)絡(luò)的遠程圖片乾胶。具有緩存管理、異步下載朽寞、同一個URL下載次數(shù)控制和優(yōu)化等特征胚吁。
14 用NSURL初始化的NSData對象,用哪個類去解析愁憔?
答:這個需要根據(jù)NSData數(shù)據(jù)是什么類型 然后可以用對應(yīng)的解析工具來解析。

16孽拷、afn底層怎么實現(xiàn)

整理AFNetworking
AFNetworking是對NSURLConnection和NSURLSession做的封裝
在AFNetworking1.0版本用NSURLConnection —>AFHTTPRequestOperationManager

在AFNetworking2.0版本用NSURLSession —>AFHTTPSessionManager

可以進行一些網(wǎng)絡(luò)請求啊吨掌,數(shù)據(jù)上傳,下載,檢測網(wǎng)絡(luò)狀態(tài)等

一般開發(fā)中使用afn更多將afn封裝成隔離網(wǎng)絡(luò)框架膜宋,一個網(wǎng)絡(luò)工具類窿侈,在網(wǎng)絡(luò)工具類內(nèi)部使用自定義的POST,GET方法將afn請求進一步封裝秋茫,可以最大程度的降低對afn的依賴史简。

使用隔離網(wǎng)絡(luò)框架好處,將所有網(wǎng)絡(luò)請求交給網(wǎng)絡(luò)工具類處理肛著,更加方便后期的修改和維護圆兵。

再進行封裝的話可以將數(shù)據(jù)庫和隔離網(wǎng)絡(luò)框架封裝成DAL數(shù)據(jù)訪問層(data Access Layer)。

增加DAL層的好處是枢贿,模型只需要調(diào)用自定義的接口就能加載數(shù)據(jù)殉农,不需要關(guān)心數(shù)據(jù)是怎么來的,所有操作由內(nèi)部完成局荚,如果本地有數(shù)據(jù)超凳,就加載本地緩存數(shù)據(jù),如果沒有耀态,就調(diào)用網(wǎng)絡(luò)隔離框架進行網(wǎng)絡(luò)請求

將所有網(wǎng)絡(luò)請求交給網(wǎng)絡(luò)工具類處理轮傍,更加方便后期的修改和維護

再進行封裝的話可以將數(shù)據(jù)庫和隔離網(wǎng)絡(luò)框架封裝成DAL數(shù)據(jù)訪問層(data Access Layer)

增加DAL層的好處是,模型只需要調(diào)用自定義的接口就能加載數(shù)據(jù)首装,不需要關(guān)心數(shù)據(jù)是怎么來的创夜,所有操作由內(nèi)部完成,如果本地有數(shù)據(jù)簿盅,就加載本地緩存數(shù)據(jù)挥下,如果沒有,就調(diào)用網(wǎng)絡(luò)隔離框架進行網(wǎng)絡(luò)請求

17.請解釋下列HTTP狀態(tài)碼的含義桨醋?并列舉你在開發(fā)過程中遇到的狀態(tài)碼棚瘟,并說明造成的原因和你的解決方法。
(1).1xx (2).2xx
(3).3xx (4).4xx
(5).5xx

狀態(tài)碼 1信息提示 2成功 3重定向 4訪問被拒絕 5服務(wù)器錯誤

15.AFNetWofking和ASIHttpRequest都是著名的Objective-C網(wǎng)絡(luò)通訊開源項目喜最,你能說說兩者之間的區(qū)別嗎(AF包含2.0和3.0)偎蘸?

一、底層實現(xiàn)
1瞬内、AFN的底層實現(xiàn)基于OC的NSURLConnection和NSURLSession
2迷雪、ASI的底層實現(xiàn)基于純C語言的CFNetwork框架
3、因為NSURLConnection和NSURLSession是在CFNetwork之上的一層封裝虫蝶,因此ASI的運行性能高于AFN
AFNetworking的下載地址: https://github.com/AFNetworking/AFNetworking

二章咧、對服務(wù)器返回的數(shù)據(jù)處理
1、ASI沒有直接提供對服務(wù)器數(shù)據(jù)處理的方式能真,直接返回的是NSData/NSString
2赁严、AFN提供了多種對服務(wù)器數(shù)據(jù)處理的方式
(1)JSON處理-直接返回NSDictionary或者NSArray
(2)XML處理-返回的是xml類型數(shù)據(jù)扰柠,需對其進行解析
(3)其他類型數(shù)據(jù)處理

三、監(jiān)聽請求過程
1疼约、AFN提供了success和failure兩個block來監(jiān)聽請求的過程(只能監(jiān)聽成功和失斅钡怠)
*success : 請求成功后調(diào)用
*failure : 請求失敗后調(diào)用
2、ASI提供了3套方案程剥,每一套方案都能監(jiān)聽請求的完整過程
(監(jiān)聽請求開始劝枣、接收到響應(yīng)頭信息、接受到具體數(shù)據(jù)织鲸、接受完畢舔腾、請求失敗)
*成為代理昙沦,遵守協(xié)議琢唾,實現(xiàn)協(xié)議中的代理方法
*成為代理,不遵守協(xié)議盾饮,自定義代理方法
*設(shè)置block

四采桃、在文件下載和文件上傳的使用難易度
1、AFN
*不容易實現(xiàn)監(jiān)聽下載進度和上傳進度
*不容易實現(xiàn)斷點續(xù)傳
*一般只用來下載不大的文件
2丘损、ASI
*非常容易實現(xiàn)下載和上傳
*非常容易監(jiān)聽下載進度和上傳進度
*非常容易實現(xiàn)斷點續(xù)傳
*下載大文件或小文件均可
3普办、實現(xiàn)下載上傳推薦使用ASI

五、網(wǎng)絡(luò)監(jiān)控
1徘钥、AFN自己封裝了網(wǎng)絡(luò)監(jiān)控類衔蹲,易使用
2、ASI使用的是Reachability呈础,因為使用CocoaPods下載ASI時舆驶,會同步下載Reachability,但Reachability作為網(wǎng)絡(luò)監(jiān)控使用較為復(fù)雜(相對于AFN的網(wǎng)絡(luò)監(jiān)控類來說)
3而钞、推薦使用AFN做網(wǎng)絡(luò)監(jiān)控-AFNetworkReachabilityManager

六沙廉、ASI提供的其他實用功能
1、控制信號旁邊的圈圈要不要在請求過程中轉(zhuǎn)
2臼节、可以輕松地設(shè)置請求之間的依賴:每一個請求都是一個NSOperation對象
3撬陵、可以統(tǒng)一管理所有請求(還專門提供了一個叫做ASINetworkQueue來管理所有的請求對象)
*暫停\恢復(fù)\取消所有的請求
*監(jiān)聽整個隊列中所有請求的下載進度和上傳進度

18.HTTP請求屬于OSI中的哪一層?

七層結(jié)構(gòu):物理層网缝、數(shù)據(jù)鏈路層巨税、網(wǎng)絡(luò)層、傳輸層粉臊、會話層草添、表示層、應(yīng)用層
tcp屬于傳輸層扼仲;http屬于應(yīng)用層果元。

1促王、401.402.403.常見的網(wǎng)絡(luò)錯誤
404表示請求的資源不存在


2、網(wǎng)絡(luò)七層協(xié)議




網(wǎng)絡(luò)七層協(xié)議
OSI是一個開放性的通信系統(tǒng)互連參考模型而晒,他是一個定義得非常好的協(xié)議規(guī)范。OSI模型有7層結(jié)構(gòu)阅畴,每層都可以有幾個子層倡怎。 OSI的7層從上到下分別是 7 應(yīng)用層 6 表示層 5 會話層 4 傳輸層 3 網(wǎng)絡(luò)層 2 數(shù)據(jù)鏈路層 1 物理層 ;其中高層(即7贱枣、6监署、5、4層)定義了應(yīng)用程序的功能纽哥,下面3層(即3钠乏、2、1層)主要面向通過網(wǎng)絡(luò)的端到端的數(shù)據(jù)流春塌。
中文名 網(wǎng)絡(luò)七層協(xié)議
外文名 Open System Interconnection
英文縮寫 OSI
屬 性 開放式系統(tǒng)互聯(lián)參考模型

目錄
1 各層功能
? 應(yīng)用層
? 表示層
? 會話層
? 傳輸層
? 網(wǎng)絡(luò)層
? 數(shù)據(jù)鏈路層
? 物理層
2 分層優(yōu)點
3 主要組成
? 語義
? 語法
? 時序
4 發(fā)展
5 詳細介紹
? 物理層
? 數(shù)據(jù)鏈路層
? 網(wǎng)絡(luò)層
? 傳輸層
? 會話層
? 表示層
? 應(yīng)用層
6 總結(jié)
7 好處

各層功能
1晓避、應(yīng)用層
與其它計算機進行通訊的一個應(yīng)用,它是對應(yīng)應(yīng)用程序的通信服務(wù)的只壳。例如俏拱,一個沒有通信功能的字處理程序就不能執(zhí)行通信的代碼,從事字處理工作的程序員也不關(guān)心OSI的第7層吼句。但是锅必,如果添加了一個傳輸文件的選項,那么字處理器的程序員就需要實現(xiàn)OSI的第7層惕艳。示例:TELNET搞隐,HTTP,F(xiàn)TP远搪,NFS劣纲,SMTP等。

2终娃、表示層
這一層的主要功能是定義數(shù)據(jù)格式及加密味廊。例如,F(xiàn)TP允許你選擇以二進制或ASCII格式傳輸棠耕。如果選擇二進制余佛,那么發(fā)送方和接收方不改變文件的內(nèi)容。如果選擇ASCII格式窍荧,發(fā)送方將把文本從發(fā)送方的字符集轉(zhuǎn)換成標(biāo)準(zhǔn)的ASCII后發(fā)送數(shù)據(jù)辉巡。在接收方將標(biāo)準(zhǔn)的ASCII轉(zhuǎn)換成接收方計算機的字符集。示例:加密蕊退,ASCII等郊楣。

3憔恳、會話層
它定義了如何開始、控制和結(jié)束一個會話净蚤,包括對多個雙向消息的控制和管理钥组,以便在只完成連續(xù)消息的一部分時可以通知應(yīng)用,從而使表示層看到的數(shù)據(jù)是連續(xù)的今瀑,在某些情況下程梦,如果表示層收到了所有的數(shù)據(jù),則用數(shù)據(jù)代表表示層橘荠。示例:RPC屿附,SQL等。

4哥童、傳輸層
這層的功能包括是否選擇差錯恢復(fù)協(xié)議還是無差錯恢復(fù)協(xié)議挺份,及在同一主機上對不同應(yīng)用的數(shù)據(jù)流的輸入進行復(fù)用,還包括對收到的順序不對的數(shù)據(jù)包的重新排序功能贮懈。示例:TCP匀泊,UDP,SPX错邦。

5探赫、網(wǎng)絡(luò)層
這層對端到端的包傳輸進行定義,它定義了能夠標(biāo)識所有結(jié)點的邏輯地址撬呢,還定義了路由實現(xiàn)的方式和學(xué)習(xí)的方式伦吠。為了適應(yīng)最大傳輸單元長度小于包長度的傳輸介質(zhì),網(wǎng)絡(luò)層還定義了如何將一個包分解成更小的包的分段方法魂拦。示例:IP毛仪,IPX等。

6芯勘、數(shù)據(jù)鏈路層
它定義了在單個鏈路上如何傳輸數(shù)據(jù)箱靴。這些協(xié)議與被討論的各種介質(zhì)有關(guān)。示例:ATM荷愕,F(xiàn)DDI等衡怀。

7、物理層
OSI的物理層規(guī)范是有關(guān)傳輸介質(zhì)的特這些規(guī)范通常也參考了其他組織制定的標(biāo)準(zhǔn)安疗。連接頭抛杨、幀、幀的使用荐类、電流怖现、編碼及光調(diào)制等都屬于各種物理層規(guī)范中的內(nèi)容。物理層常用多個規(guī)范完成對所有細節(jié)的定義玉罐。示例:Rj45屈嗤,802.3等潘拨。

分層優(yōu)點
(1)人們可以很容易的討論和學(xué)習(xí)協(xié)議的規(guī)范細節(jié)。
(2)層間的標(biāo)準(zhǔn)接口方便了工程模塊化饶号。
(3)創(chuàng)建了一個更好的互連環(huán)境铁追。
(4)降低了復(fù)雜度,使程序更容易修改茫船,產(chǎn)品開發(fā)的速度更快脂信。
(5)每層利用緊鄰的下層服務(wù),更容易記住各層的功能透硝。
大多數(shù)的計算機網(wǎng)絡(luò)都采用層次式結(jié)構(gòu),即將一個計算機網(wǎng)絡(luò)分為若干層次疯搅,處在高層次的系統(tǒng)僅是利用較低層次的系統(tǒng)提供的接口和功能濒生,不需了解低層實現(xiàn)該功能所采用的算法和協(xié)議;較低層次也僅是使用從高層系統(tǒng)傳送來的參數(shù)幔欧,這就是層次間的無關(guān)性罪治。因為有了這種無關(guān)性,層次間的每個模塊可以用一個新的模塊取代礁蔗,只要新的模塊與舊的模塊具有相同的功能和接口觉义,即使它們使用的算法和協(xié)議都不一樣。
網(wǎng)絡(luò)中的計算機與終端間要想正確的傳送信息和數(shù)據(jù)浴井,必須在數(shù)據(jù)傳輸?shù)捻樞蛏购А?shù)據(jù)的格式及內(nèi)容等方面有一個約定或規(guī)則,這種約定或規(guī)則稱做協(xié)議磺浙。

主要組成
語義:
是對協(xié)議元素的含義進行解釋洪囤,不同類型的協(xié)議元素所規(guī)定的語義是不同的。例如需要發(fā)出何種控制信息撕氧、完成何種動作及得到的響應(yīng)等瘤缩。
語法:
將若干個協(xié)議元素和數(shù)據(jù)組合在一起用來表達一個完整的內(nèi)容所應(yīng)遵循的格式,也就是對信息的數(shù)據(jù)結(jié)構(gòu)做一種規(guī)定伦泥。例如用戶數(shù)據(jù)與控制信息的結(jié)構(gòu)與格式等剥啤。
時序:
對事件實現(xiàn)順序的詳細說明。例如在雙方進行通信時不脯,發(fā)送點發(fā)出一個數(shù)據(jù)報文府怯,如果目標(biāo)點正確收到,則回答源點接收正確跨新;若接收到錯誤的信息富腊,則要求源點重發(fā)一次。

發(fā)展:
70年代以來域帐,國外一些主要計算機生產(chǎn)廠家先后推出了各自的網(wǎng)絡(luò)體系結(jié)構(gòu)赘被,但它們都屬于專用的是整。
為使不同計算機廠家的計算機能夠互相通信,以便在更大的范圍內(nèi)建立計算機網(wǎng)絡(luò)民假,有必要建立一個國際范圍的網(wǎng)絡(luò)體系結(jié)構(gòu)標(biāo)準(zhǔn)浮入。
國際標(biāo)準(zhǔn)化組織ISO 于1981年正式推薦了一個網(wǎng)絡(luò)系統(tǒng)結(jié)構(gòu)----七層參考模型[1] ,叫做開放系統(tǒng)互連模型(Open System Interconnection羊异,OSI)事秀。由于這個標(biāo)準(zhǔn)模型的建立,使得各種計算機網(wǎng)絡(luò)向它靠攏,大大推動了網(wǎng)絡(luò)通信的發(fā)展野舶。
OSI 參考模型將整個網(wǎng)絡(luò)通信的功能劃分為七個層次易迹,見圖1。它們由低到高分別是物理層(PH)平道、數(shù)據(jù)鏈路層(DL)睹欲、網(wǎng)絡(luò)層(N)、傳輸層(T)一屋、會話層(S)窘疮、表示層(P)、應(yīng)用層(A)冀墨。每層完成一定的功能闸衫,每層都直接為其上層提供服務(wù),并且所有層次都互相支持诽嘉。第四層到第七層主要負(fù)責(zé)互操作性蔚出,而一層到三層則用于創(chuàng)造兩個網(wǎng)絡(luò)設(shè)備間的物理連接。

詳細介紹
1含懊、物理層
物理層是OSI的第一層身冬,它雖然處于最底層,卻是整個開放系統(tǒng)的基礎(chǔ)岔乔。物理層為設(shè)備之間的數(shù)據(jù)通信提供傳輸媒體及互連設(shè)備酥筝,為數(shù)據(jù)傳輸提供可靠的環(huán)境。

1.1媒體和互連設(shè)備

物理層的媒體包括架空明線雏门、平衡電纜嘿歌、光纖、無線信道等茁影。通信用的互連設(shè)備指DTE和DCE間的互連設(shè)備宙帝。DTE即數(shù)據(jù)終端設(shè)備,又稱物理設(shè)備募闲,如計算機步脓、終端等都包括在內(nèi)。而DCE則是數(shù)據(jù)通信設(shè)備或電路連接設(shè)備,如調(diào)制解調(diào)器等靴患。數(shù)據(jù)傳輸通常是經(jīng)過DTE——DCE仍侥,再經(jīng)過DCE——DTE的路徑≡Ь互連設(shè)備指將DTE农渊、DCE連接起來的裝置,如各種插頭或颊、插座砸紊。LAN中的各種粗、細同軸電纜囱挑、T型接醉顽、插頭,接收器平挑,發(fā)送器徽鼎,中繼器等都屬物理層的媒體和連接器。

1.2物理層的主要功能

1.2.1為數(shù)據(jù)端設(shè)備提供傳送數(shù)據(jù)的通路弹惦,數(shù)據(jù)通路可以是一個物理媒體,也可以是多個物理媒體連接而成悄但。一次完整的數(shù)據(jù)傳輸棠隐,包括激活物理連接,傳送數(shù)據(jù)檐嚣,終止物理連接.所謂激活助泽,就是不管有多少物理媒體參與,都要在通信的兩個數(shù)據(jù)終端設(shè)備間連接起來嚎京,形成一條通路嗡贺。

1.2.2傳輸數(shù)據(jù).物理層要形成適合數(shù)據(jù)傳輸需要的實體,為數(shù)據(jù)傳送服務(wù)鞍帝。一是要保證數(shù)據(jù)能在其上正確通過诫睬,二是要提供足夠的帶寬(帶寬是指每秒鐘內(nèi)能通過的比特(BIT)數(shù)),以減少信道上的擁塞帕涌。傳輸數(shù)據(jù)的方式能滿足點到點摄凡,一點到多點,串行或并行蚓曼,半雙工或全雙工亲澡,同步或異步傳輸?shù)男枰?/p>

1.3物理層的一些重要標(biāo)準(zhǔn)

物理層的一些標(biāo)準(zhǔn)和協(xié)議早在OSI/TC97/C16 分技術(shù)委員會成立之前就已制定并在應(yīng)用了,OSI也制定了一些標(biāo)準(zhǔn)并采用了一些已有的成果.下面將一些重要的標(biāo)準(zhǔn)列出,以便讀者查閱.ISO2110:稱為"數(shù)據(jù)通信----25芯DTE/DCE接口連接器和插針分配"。它與EIA(美國電子工業(yè)協(xié)會)的"RS-232-C"基本兼容纫版。ISO2593:稱為"數(shù)據(jù)通信----34芯DTE/DCE----接口連接器和插針分配"床绪。ISO4092:稱為"數(shù)據(jù)通信----37芯DTE/DEC----接口連接器和插針分配".與EIARS-449兼容。CCITT V.24:稱為"數(shù)據(jù)終端設(shè)備(DTE)和數(shù)據(jù)電路終接設(shè)備之間的接口電路定義表".其功能與EIARS-232-C及RS-449兼容于100序列線上。

2癞己、數(shù)據(jù)鏈路層

數(shù)據(jù)鏈路可以粗略地理解為數(shù)據(jù)通道膀斋。物理層要為終端設(shè)備間的數(shù)據(jù)通信提供傳輸媒體及其連接.媒體是長期的,連接是有生存期的.在連接生存期內(nèi),收發(fā)兩端可以進行不等的一次或多次數(shù)據(jù)通信.每次通信都要經(jīng)過建立通信聯(lián)絡(luò)和拆除通信聯(lián)絡(luò)兩過程.這種建立起來的數(shù)據(jù)收發(fā)關(guān)系就叫作數(shù)據(jù)鏈路.而在物理媒體上傳輸?shù)臄?shù)據(jù)難免受到各種不可靠因素的影響而產(chǎn)生差錯,為了彌補物理層上的不足,為上層提供無差錯的數(shù)據(jù)傳輸,就要能對數(shù)據(jù)進行檢錯和糾錯.數(shù)據(jù)鏈路的建立,拆除,對數(shù)據(jù)的檢錯,糾錯是數(shù)據(jù)鏈路層的基本任務(wù)。

2.1鏈路層的主要功能

鏈路層是為網(wǎng)絡(luò)層提供數(shù)據(jù)傳送服務(wù)的,這種服務(wù)要依靠本層具備的功能來實現(xiàn)末秃。鏈路層應(yīng)具備如下功能:

2.1.1鏈路連接的建立概页,拆除,分離练慕。

2.1.2幀定界和幀同步惰匙。鏈路層的數(shù)據(jù)傳輸單元是幀,協(xié)議不同,幀的長短和界面也有差別,但無論如何必須對幀進行定界铃将。

2.1.3順序控制,指對幀的收發(fā)順序的控制项鬼。

2.1.4差錯檢測和恢復(fù)。還有鏈路標(biāo)識,流量控制等等.差錯檢測多用方陣碼校驗和循環(huán)碼校驗來檢測信道上數(shù)據(jù)的誤碼,而幀丟失等用序號檢測.各種錯誤的恢復(fù)則尘⒀郑靠反饋重發(fā)技術(shù)來完成绘盟。

2.2數(shù)據(jù)鏈路層的主要協(xié)議

數(shù)據(jù)鏈路層協(xié)議是為發(fā)對等實體間保持一致而制定的,也為了順利完成對網(wǎng)絡(luò)層的服務(wù)。主要協(xié)議如下:

2.2.1 ISO1745--1975:"數(shù)據(jù)通信系統(tǒng)的基本型控制規(guī)程".這是一種面向字符的標(biāo)準(zhǔn),利用10個控制字符完成鏈路的建立悯仙,拆除及數(shù)據(jù)交換.對幀的收發(fā)情況及差錯恢復(fù)也是靠這些字符來完成.ISO1155, ISO1177, ISO2626, ISO2629等標(biāo)準(zhǔn)的配合使用可形成多種鏈路控制和數(shù)據(jù)傳輸方式.

2.2.2 ISO3309--1984:稱為"HDLC 幀結(jié)構(gòu)".ISO4335--1984:稱為"HDLC 規(guī)程要素 "龄毡。ISO7809--1984:稱為"HDLC 規(guī)程類型匯編"。這3個標(biāo)準(zhǔn)都是為面向比特的數(shù)據(jù)傳輸控制而制定的锡垄。有人習(xí)慣上把這3個標(biāo)準(zhǔn)組合稱為高級鏈路控制規(guī)程.

2.2.3 ISO7776:稱為"DTE數(shù)據(jù)鏈路層規(guī)程".與CCITT X.25LAB"平衡型鏈路訪問規(guī)程"相兼容沦零。

2.3鏈路層產(chǎn)品

獨立的鏈路產(chǎn)品中最常見的當(dāng)屬網(wǎng)卡,網(wǎng)橋也是鏈路產(chǎn)品。MODEM的某些功能有人認(rèn)為屬于鏈路層,對此還有爭議.數(shù)據(jù)鏈路層將本質(zhì)上不可靠的傳輸媒體變成可靠的傳輸通路提供給網(wǎng)絡(luò)層货岭。在IEEE802.3情況下路操,數(shù)據(jù)鏈路層分成了兩個子層,一個是邏輯鏈路控制千贯,另一個是媒體訪問控制屯仗。下圖所示為IEEE802.3LAN體系結(jié)構(gòu)。

AUI=連接單元接口 PMA=物理媒體連接

MAU=媒體連接單元 PLS=物理信令

MDI=媒體相關(guān)接口

3搔谴、網(wǎng)絡(luò)層
網(wǎng)絡(luò)層的產(chǎn)生也是網(wǎng)絡(luò)發(fā)展的結(jié)果.在聯(lián)機系統(tǒng)和線路交換的環(huán)境中魁袜,網(wǎng)絡(luò)層的功能沒有太大意義.當(dāng)數(shù)據(jù)終端增多時。它們之間有中繼設(shè)備相連.此時會出現(xiàn)一臺終端要求不只是與唯一的一臺而是能和多臺終端通信的情況,這就是產(chǎn)生了把任意兩臺數(shù)據(jù)終端設(shè)備的數(shù)據(jù)鏈接起來的問題,也就是路由或者叫尋徑敦第。另外,當(dāng)一條物理信道建立之后,被一對用戶使用,往往有許多空閑時間被浪費掉.人們自然會希望讓多對用戶共用一條鏈路慌核,為解決這一問題就出現(xiàn)了邏輯信道技術(shù)和虛擬電路技術(shù)。
3.1網(wǎng)絡(luò)層主要功能
網(wǎng)絡(luò)層為建立網(wǎng)絡(luò)連接和為上層提供服務(wù),應(yīng)具備以下主要功能:
3.1.1路由選擇和中繼.
3.1.2激活,終止網(wǎng)絡(luò)連接.
3.1.3在一條數(shù)據(jù)鏈路上復(fù)用多條網(wǎng)絡(luò)連接,多采取分時復(fù)用技術(shù) .
3.1.4差錯檢測與恢復(fù).
3.1.5排序,流量控制.
3.1.6服務(wù)選擇.
3.1.7網(wǎng)絡(luò)管理.
3.2網(wǎng)絡(luò)層標(biāo)準(zhǔn)簡介
網(wǎng)絡(luò)層的一些主要標(biāo)準(zhǔn)如下:
3.2.1 ISO.DIS8208:稱為"DTE用的X.25分組級協(xié)議"
3.2.2 ISO.DIS8348:稱為"CO 網(wǎng)絡(luò)服務(wù)定義"(面向連接)
3.2.3 ISO.DIS8349:稱為"CL 網(wǎng)絡(luò)服務(wù)定義"(面向無連接)
3.2.4 ISO.DIS8473:稱為"CL 網(wǎng)絡(luò)協(xié)議"
3.2.5 ISO.DIS8348:稱為"網(wǎng)絡(luò)層尋址"
3.2.6 除上述標(biāo)準(zhǔn)外,還有許多標(biāo)準(zhǔn)申尼。這些標(biāo)準(zhǔn)都只是解決網(wǎng)絡(luò)層的部分功能,所以往往需要在網(wǎng)絡(luò)層中同時使用幾個標(biāo)準(zhǔn)才能完成整個網(wǎng)絡(luò)層的功能.由于面對的網(wǎng)絡(luò)不同,網(wǎng)絡(luò)層將會采用不同的標(biāo)準(zhǔn)組合.
在具有開放特性的網(wǎng)絡(luò)中的數(shù)據(jù)終端設(shè)備,都要配置網(wǎng)絡(luò)層的功能.現(xiàn)在市場上銷售的網(wǎng)絡(luò)硬設(shè)備主要有網(wǎng)關(guān)和路由器.

4垮卓、傳輸層
傳輸層是兩臺計算機經(jīng)過網(wǎng)絡(luò)進行數(shù)據(jù)通信時,第一個端到端的層次,具有緩沖作用师幕。當(dāng)網(wǎng)絡(luò)層服務(wù)質(zhì)量不能滿足要求時粟按,它將服務(wù)加以提高诬滩,以滿足高層的要求;當(dāng)網(wǎng)絡(luò)層服務(wù)質(zhì)量較好時灭将,它只用很少的工作疼鸟。傳輸層還可進行復(fù)用,即在一個網(wǎng)絡(luò)連接上創(chuàng)建多個邏輯連接庙曙。 傳輸層也稱為運輸層.傳輸層只存在于端開放系統(tǒng)中,是介于低3層通信子網(wǎng)系統(tǒng)和高3層之間的一層,但是很重要的一層.因為它是源端到目的端對數(shù)據(jù)傳送進行控制從低到高的最后一層.

有一個既存事實空镜,即世界上各種通信子網(wǎng)在性能上存在著很大差異.例如電話交換網(wǎng),分組交換網(wǎng),公用數(shù)據(jù)交換網(wǎng),局域網(wǎng)等通信子網(wǎng)都可互連,但它們提供的吞吐量,傳輸速率,數(shù)據(jù)延遲通信費用各不相同.對于會話層來說,卻要求有一性能恒定的界面.傳輸層就承擔(dān)了這一功能.它采用分流/合流捌朴,復(fù)用/解復(fù)用技術(shù)來調(diào)節(jié)上述通信子網(wǎng)的差異,使會話層感受不到.

此外傳輸層還要具備差錯恢復(fù)吴攒,流量控制等功能,以此對會話層屏蔽通信子網(wǎng)在這些方面的細節(jié)與差異.傳輸層面對的數(shù)據(jù)對象已不是網(wǎng)絡(luò)地址和主機地址,而是和會話層的界面端口.上述功能的最終目的是為會話提供可靠的,無誤的數(shù)據(jù)傳輸.傳輸層的服務(wù)一般要經(jīng)歷傳輸連接建立階段,數(shù)據(jù)傳送階段,傳輸連接釋放階段3個階段才算完成一個完整的服務(wù)過程.而在數(shù)據(jù)傳送階段又分為一般數(shù)據(jù)傳送和加速數(shù)據(jù)傳送兩種。傳輸層服務(wù)分成5種類型.基本可以滿足對傳送質(zhì)量,傳送速度,傳送費用的各種不同需要.傳輸層的協(xié)議標(biāo)準(zhǔn)有以下幾種:
ISO8072:稱為"面向連接的傳輸服務(wù)定義"
ISO8072:稱為"面向連接的傳輸協(xié)議規(guī)范"

5、會話層

會話層提供的服務(wù)可使應(yīng)用建立和維持會話,并能使會話獲得同步提陶。會話層使用校驗點可使通信會話在通信失效時從校驗點繼續(xù)恢復(fù)通信。這種能力對于傳送大的文件極為重要镣隶。會話層,表示層,應(yīng)用層構(gòu)成開放系統(tǒng)的高3層,面對應(yīng)用進程提供分布處理诡右,對話管理,信息表示,恢復(fù)最后的差錯等.

會話層同樣要擔(dān)負(fù)應(yīng)用進程服務(wù)要求安岂,而運輸層不能完成的那部分工作,給運輸層功能差距以彌補.主要的功能是對話管理,數(shù)據(jù)流同步和重新同步帆吻。要完成這些功能,需要由大量的服務(wù)單元功能組合,已經(jīng)制定的功能單元已有幾十種.現(xiàn)將會話層主要功能介紹如下.
5.1為會話實體間建立連接嗜闻。
為給兩個對等會話服務(wù)用戶建立一個會話連接,應(yīng)該做如下幾項工作:
5.1.1將會話地址映射為運輸?shù)刂?br> 5.1.2選擇需要的運輸服務(wù)質(zhì)量參數(shù)(QOS)
5.1.3對會話參數(shù)進行協(xié)商
5.1.3識別各個會話連接
5.1.4傳送有限的透明用戶數(shù)據(jù)
5.2數(shù)據(jù)傳輸階段
這個階段是在兩個會話用戶之間實現(xiàn)有組織的,同步的數(shù)據(jù)傳輸.用戶數(shù)據(jù)單元為SSDU,而協(xié)議數(shù)據(jù)單元為SPDU.會話用戶之間的數(shù)據(jù)傳送過程是將SSDU轉(zhuǎn)變成SPDU進行的.
5.3連接釋放
連接釋放是通過"有序釋放","廢棄","有限量透明用戶數(shù)據(jù)傳送"等功能單元來釋放會話連接的.會話層標(biāo)準(zhǔn)為了使會話連接建立階段能進行功能協(xié)商桅锄,也為了便于其它國際標(biāo)準(zhǔn)參考和引用,定義了12種功能單元.各個系統(tǒng)可根據(jù)自身情況和需要,以核心功能服務(wù)單元為基礎(chǔ),選配其他功能單元組成合理的會話服務(wù)子集.會話層的主要標(biāo)準(zhǔn)有"DIS8236:會話服務(wù)定義"和"DIS8237:會話協(xié)議規(guī)范".

6样眠、表示層

表示層的作用之一是為異種機通信提供一種公共語言友瘤,以便能進行互操作。這種類型的服務(wù)之所以需要檐束,是因為不同的計算機體系結(jié)構(gòu)使用的數(shù)據(jù)表示法不同辫秧。例如,IBM主機使用EBCDIC編碼被丧,而大部分PC機使用的是ASCII碼盟戏。在這種情況下,便需要會話層來完成這種轉(zhuǎn)換甥桂。

通過前面的介紹,我們可以看出,會話層以下5層完成了端到端的數(shù)據(jù)傳送,并且是可靠,無差錯的傳送.但是數(shù)據(jù)傳送只是手段而不是目的,最終是要實現(xiàn)對數(shù)據(jù)的使用.由于各種系統(tǒng)對數(shù)據(jù)的定義并不完全相同,最易明白的例子是鍵盤,其上的某些鍵的含義在許多系統(tǒng)中都有差異.這自然給利用其它系統(tǒng)的數(shù)據(jù)造成了障礙.表示層和應(yīng)用層就擔(dān)負(fù)了消除這種障礙的任務(wù).

對于用戶數(shù)據(jù)來說,可以從兩個側(cè)面來分析,一個是數(shù)據(jù)含義被稱為語義,另一個是數(shù)據(jù)的表示形式,稱做語法.像文字,圖形,聲音,文種,壓縮,加密等都屬于語法范疇.表示層設(shè)計了3類15種功能單位,其中上下文管理功能單位就是溝通用戶間的數(shù)據(jù)編碼規(guī)則,以便雙方有一致的數(shù)據(jù)形式,能夠互相認(rèn)識.ISO表示層為服務(wù),協(xié)議,文本通信符制定了DP8822,DP8823,DIS6937/2等一系列標(biāo)準(zhǔn).

7柿究、應(yīng)用層

應(yīng)用層向應(yīng)用程序提供服務(wù),這些服務(wù)按其向應(yīng)用程序提供的特性分成組黄选,并稱為服務(wù)元素蝇摸。有些可為多種應(yīng)用程序共同使用婶肩,有些則為較少的一類應(yīng)用程序使用。應(yīng)用層是開放系統(tǒng)的最高層,是直接為應(yīng)用進程提供服務(wù)的貌夕。其作用是在實現(xiàn)多個系統(tǒng)應(yīng)用進程相互通信的同時,完成一系列業(yè)務(wù)處理所需的服務(wù).其服務(wù)元素分為兩類:公共應(yīng)用服務(wù)元素CASE和特定應(yīng)用服務(wù)元素SASE.CASE提供最基本的服務(wù),它成為應(yīng)用層中任何用戶和任何服務(wù)元素的用戶律歼,主要為應(yīng)用進程通信,分布系統(tǒng)實現(xiàn)提供基本的控制機制.特定服務(wù)SASE則要滿足一些特定服務(wù),如文卷傳送,訪問管理,作業(yè)傳送,銀行事務(wù),訂單輸入等.

這些將涉及到虛擬終端,作業(yè)傳送與操作,文卷傳送及訪問管理,遠程數(shù)據(jù)庫訪問,圖形核心系統(tǒng),開放系統(tǒng)互連管理等等.應(yīng)用層的標(biāo)準(zhǔn)有DP8649"公共應(yīng)用服務(wù)元素",DP8650"公共應(yīng)用服務(wù)元素用協(xié)議",文件傳送,訪問和管理服務(wù)及協(xié)議.

總結(jié)
OSI七層模型是一個理論模型,實際應(yīng)用則千變?nèi)f化啡专,因此更多把它作為分析险毁、評判各種網(wǎng)絡(luò)技術(shù)的依據(jù);對大多數(shù)應(yīng)用來說们童,只將它的協(xié)議族(即協(xié)議堆棧)與七層模型作大致的對應(yīng)畔况,看看實際用到的特定協(xié)議是屬于七層中某個子層,還是包括了上下多層的功能病附。
好處編輯
1.使人們?nèi)菀滋接懞屠斫鈪f(xié)議的許多細節(jié)问窃。
2.在各層間標(biāo)準(zhǔn)化接口,允許不同的產(chǎn)品只提供各層功能的一部分完沪,(如路由器在一到三層)域庇,或者只提供協(xié)議功能的一部分。(如Win95中的Microsoft TCP/IP)
3.創(chuàng)建更好集成的環(huán)境覆积。
4.減少復(fù)雜性听皿,允許更容易編程改變或快速評估。
5.用各層的headers和trailers排錯宽档。
6.較低的層為較高的層提供服務(wù)尉姨。
7.把復(fù)雜的網(wǎng)絡(luò)劃分成為更容易管理的層。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吗冤,一起剝皮案震驚了整個濱河市又厉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌椎瘟,老刑警劉巖覆致,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異肺蔚,居然都是意外死亡煌妈,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門宣羊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來璧诵,“玉大人,你說我怎么就攤上這事仇冯≈蓿” “怎么了?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵苛坚,是天一觀的道長澈缺。 經(jīng)常有香客問我坪创,道長,這世上最難降的妖魔是什么姐赡? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任莱预,我火速辦了婚禮,結(jié)果婚禮上项滑,老公的妹妹穿的比我還像新娘依沮。我一直安慰自己,他們只是感情好枪狂,可當(dāng)我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布危喉。 她就那樣靜靜地躺著,像睡著了一般州疾。 火紅的嫁衣襯著肌膚如雪辜限。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天严蓖,我揣著相機與錄音薄嫡,去河邊找鬼。 笑死颗胡,一個胖子當(dāng)著我的面吹牛毫深,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播毒姨,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼哑蔫,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了弧呐?” 一聲冷哼從身側(cè)響起闸迷,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎俘枫,沒想到半個月后腥沽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡崩哩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了言沐。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片邓嘹。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖险胰,靈堂內(nèi)的尸體忽然破棺而出汹押,到底是詐尸還是另有隱情,我是刑警寧澤起便,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布棚贾,位于F島的核電站窖维,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏妙痹。R本人自食惡果不足惜铸史,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望怯伊。 院中可真熱鬧琳轿,春花似錦、人聲如沸耿芹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吧秕。三九已至琉闪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間砸彬,已是汗流浹背颠毙。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留拿霉,地道東北人吟秩。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像绽淘,于是被迫代替她去往敵國和親涵防。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 網(wǎng)絡(luò)概念第一天 兩臺電腦怎么通過網(wǎng)絡(luò)傳輸數(shù)據(jù)沪铭?怎樣才能知道傳輸?shù)氖菙?shù)據(jù)壮池?誰摸過網(wǎng)線? 看電影杀怠,怎么看的椰憋?通過電流,...
    小吖朱閱讀 1,554評論 0 1
  • iOS網(wǎng)絡(luò)HTTP赔退、TCP橙依、UDP、Socket 知識總結(jié)OSI 七層模型我們一般使用的網(wǎng)絡(luò)數(shù)據(jù)傳輸由下而上共有七...
    蝸牛也有夢想閱讀 2,404評論 0 3
  • 前言:和王先生相識于2013年的冬天硕旗,從此開始了奇妙的二人世界窗骑!幸福,甜蜜漆枚,淚水创译,爭吵,無厘頭墙基,就像每一對情侶一樣...
    w小幽e閱讀 471評論 0 1
  • 每天梳頭是一件極為重要的事情软族。古人說天天要梳頭刷喜,實際上就是梳理頭上的經(jīng)絡(luò)。 有人說梳頭多了立砸,容易損傷毛囊掖疮,那我們就...
    健康管理師吳佳麗閱讀 623評論 0 1