1. 怎麼使用E-MAIL
電子郵件是靠SMTP發送的。
SMTP基於以下的通信模型:根據用戶的郵件請求,發送方SMTP建立與接收方SMTP之間的雙向通道。接收方SMTP可以是最終接收者,也可以是中間傳送者。發送方SMTP產生並發送SMTP命令,接收方SMTP向發送方SMTP返回響應信息。
連接建立後,發送方SMTP發送MAIL命令指明發信人,如果接收方SMTP認可,則返回OK應答。發送方SMTP再發送RCPT命令指明收信人,如果接收方SMTP也認可,則再次返回OK應答;否則將給予拒絕應答(但不中止整個郵件的發送操作)。
(1)命令接收方擴展閱讀:
電子郵件服務由專門的伺服器提供,Gmail,Hotmail,網易郵箱,新浪郵箱等郵箱服務也是建立在電子郵件伺服器基礎上,但是大型郵件服務商的系統一般是自主開發或是對其他技術二次開發實現的。主要的電子郵件伺服器主要有以下兩大塊:
一、基於Unix/Linux平台的郵件系統
1.Sendmail郵件系統(支持SMTP)和dovecot郵件系統(支持POP3)
Sendmail可以說是郵件的鼻祖,迄今為止有50多年的歷史。
本當郵件是其中的一個典型代表
2.基於Postfix/Qmail的郵件系統。Postfix/Qmail技術是在Sendmail技術上發展起來的,迄今為止歷史不超過10年。如網易郵箱的MTA是基於Postfix,yahoo的郵箱是基於Qmail系統。
2. TCP可靠性保證和tcpmp命令使用
上篇分析了LengthFieldBasedFrameDecoder,只需要簡單靈活的指定幾個參數就能滿足多種情況下的拆包處理,將服務端接收到的二進制流基於長度前綴法解析為一個個的ByteBuf消息體。
但是請設想一下異常的情況:如果網路傳輸過程中出現丟幀或者長度域中某個位在模數轉換時出現了意外沒有得到正確轉換,是否意味著所有的消息體都無法再得到正確的解析了呢?本篇我們就來聊聊TCP協議的可靠性保證。
溫故知新,首先我們回憶一下TCP報文結構:
16 位源埠號和 16 位目的埠號:埠號通常也稱為進程地址。網路中的兩個終端通信,說到底其實是兩個終端上的各自的進程在通信,通過埠號才能區分響應的數據包來自遠端的哪一個,以及需要發送到本機的哪個進程來處理。
32 位序號:序號用來標識從 TCP 發送端向 TCP 接收端發送的數據位元組流。
32 位確認序列號:表示一個准備接收包的序列號。
4 位首部長度:首部長度指出了首部中 32 bit 字的數目,正常的 TCP 首部長度是 20 位元組。
6 個標志欄位:URG 緊急指針;ACK 確認序號;PSH 推標志;RST 重建連接;SYN 同步序號;
FIN 結束標志。
16 位窗口:TCP 的流量控制由連接的每一端通過聲明的滑動窗口大小來提供,窗口大小為位元組數。
16 位檢驗和:檢驗和欄位覆蓋了 TCP 首部和 TCP 數據。TCP 檢驗和的計算方法和 UDP 檢驗和的
計算方法一樣,計算時需要考慮偽報頭。
16 位緊急指針:URG 標志置 1 時緊急指針才有效。
可以看出TCP通過多種方式來保證消息的可靠性:
1、檢驗和:保證接收到位元組流未出現模數轉換異常
2、序號和確認序列號:發送方對每個位元組進行編號,接收方對接收的數據包進行序號確認,超時後發送方會重發。
3、滑動窗口大小:通過設置滑動窗口大小表示自身socket緩沖區的大小,防止緩沖區滿後發送方仍然不停發數據導致的丟包。
tcpmp是一款強大的命令,通過tcpmp可以很方便的排查出網路連接中的一些故障問題。下面是我在本機和es服務通信的一段抓包信息:
本次tcpmp抓包過濾規則:
ip為192.168.1.77,tcp協議,埠為5601的前100個數據包。
可以清晰的看到,es服務在接收到請求數據包後,連續發送了5個數據包,分別為:
seq 1:274, ack 416, win 190, length 273
seq 274:3194, ack 416, win 190, length 2920
seq 3194:6114, ack 416, win 190, length 2920
seq 6114:9034, ack 416, win 190, length 2920
seq 9034:11954, ack 416, win 190, length 2920
而接收方在接收到數據包後依次發送了確認包:
ack 3194, win 256, length 0
ack 6114, win 256, length 0
ack 9034, win 256, length 0
ack 11954, win 256, length 0
可以看到接收方並不需要對每一個數據包進行確認,ack 3194代表接收方對3194之前的數據包都進行了確認。
嗯,至此算是對本篇開頭的疑問進行了解答。
圖片來自參考資料:
《網路協議分析及應用實驗教程》
3. 電子郵件在internet上傳輸一般通過什麼協議實現
通過SMTP協議來實現。
SMTP是一個相對簡單的基於文本的協議。在其之上指定了一條消息的一個或多個接收者(在大多數情況下被確認是存在的),然後消息文本會被傳輸。可以很簡單地通過telnet程序來測試一個SMTP伺服器。SMTP使用TCP埠25。要為一個給定的域名決定一個SMTP伺服器,需要使用MXDNS。
由於這個協議開始是基於純ASCII文本的,它在二進制文件上處理得並不好。諸如MIME的標准被開發來編碼二進制文件以使其通過SMTP來傳輸。大多數SMTP伺服器都支持8位MIME擴展,它使二進制文件的傳輸變得幾乎和純文本一樣簡單。
(3)命令接收方擴展閱讀:
通過網路的電子郵件系統,用戶可以以非常低廉的價格(不管發送到哪裡,都只需負擔網費)、非常快速的方式(幾秒鍾之內可以發送到世界上任何指定的目的地),與世界上任何一個角落的網路用戶聯系。
電子郵件可以是文字、圖像、聲音等多種形式。同時,用戶可以得到大量免費的新聞、專題郵件,並實現輕松的信息搜索。電子郵件的存在極大地方便了人與人之間的溝通與交流,促進了社會的發展。
4. SMTP是什麼意思
簡單郵件傳輸協議(SMTP)的目標是可靠高效地傳送郵件,它獨立於傳送子系統而且僅要求一條可以保證傳送數據單元順序的通道。附錄A,B,C和D描述了不同傳送服務下SMTP的使用。在名詞表中還定義了本文檔中使用的術語。
SMTP的一個重要特點是它能夠在傳送中接力傳送郵件,傳送服務提供了進程間通信環境(IPCE),此環境可以包括一個網路,幾個網路或一個網路的子網。理解到傳送系統(或IPCE)不是一對一的是很重要的。進程可能直接和其它進程通過已知的IPCE通信。郵件是一個應用程序或進程間通信。郵件可以通過連接在不同IPCE上的進程跨網路進行郵件傳送。更特別的是,郵件可以通過不同網路上的主機接力式傳送。
是網際網路電子郵件系統首要的應用 層協議。它使用由TCP提供的可靠的數據傳輸服務把郵件消息從發信人的郵件伺服器傳送到收信人的郵件伺服器。跟大多數應用層協議一樣,SMTP也存在兩個 端:在發信人的郵件伺服器上執行的客戶端和在收信人的郵件伺服器上執行的伺服器端。SMTP的客戶端和伺服器端同時運行在每個郵件伺服器上。當一個郵件服 務器在向其他郵件伺服器發送郵件消息時,它是作為SMTP客戶在運行。當一個郵件伺服器從其他郵件伺服器接收郵件消息時,它是作為SMTP伺服器在運行。
SMTP協議與人們用於面對面交互的禮儀之間有許多相似之處。首先,運行在發送端郵件伺服器主機上的SMTP客戶,發起建立一個到運行在接收端郵件服務 器主機上的SMTP伺服器埠號25之間的TCP連接。如果接收郵件伺服器當前不在工作,SMTP客戶就等待一段時間後再嘗試建立該連接。這個連接建立之 後,SMTP客戶和伺服器先執行一些應用層握手操作。就像人們在轉手東西之前往往先自我介紹那樣,SMTP客戶和伺服器也在傳送信息之前先自我介紹一下。 在這個SMTP握手階段,SMTP客戶向伺服器分別指出發信人和收信人的電子郵件地址。彼此自我介紹完畢之後,客戶發出郵件消息。SMTP可以指望由 TCP提供的可靠數據傳輸服務把該消息無錯地傳送到伺服器。如果客戶還有其他郵件消息需發送到同一個伺服器,它就在同一個TCP連接上重復上述過程;否 則,它就指示TCP關閉該連接。[1]
編輯本段2. SMTP模型
SMTP設計基於以下通信模型:針對用戶的郵件請求,發送SMTP建立與接收SMTP之間建立一個雙向傳送通道。接收SMTP可以是最終接收者也可以是中間傳送者。SMTP命令由發送SMTP發出,由接收SMTP接收,而應答則反方面傳送。
一旦傳送通道建立,SMTP發送者發送MAIL命令指明郵件發送者。如果
SMTP接收者可以接收郵件則返回OK應答。SMTP發送者再發出RCPT命令確認郵件是否接收到。如果SMTP接收者接收,則返回OK應答;如果不能接收到,則發出拒絕接收應答(但不中止整個郵件操作),雙方將如此重復多次。當接收者收到全部郵件後會接收到特別的序列,如果接收者成功處理了郵件,則返回OK應答。
SMTP提供傳送郵件的機制,如果接收方與發送方連接在同一個傳送服務下時,郵件可以直接由發送方主機傳送到接收方主機;或者,當兩者不在同一個傳送服務下時,通過中繼SMTP伺服器傳送。為了能夠對SMTP伺服器提供中繼能力,它必須擁有最終目的主機地址和郵箱名稱。
MAIL命令參數是回復路徑,它指定郵件從何處來;而RCPT命令的參數是轉發路徑的,它指定郵件向何處去。向前路徑是源路徑,而回復路徑是返迴路徑(它用於發生錯誤時返回郵件)。
當同一個消息要發往不同的接收者時,SMTP遇到了向不同接收者發送同一份數據的復製品的問題,郵件命令和應答有一個比較奇怪的語法,應答也有一個數字代碼。在下面,例子中可以看到哪些使用實際的命令和應答。完整的命令和應答在第四節。
命令與應答對大小寫不敏感,也就是說,命令和應答可以是大寫,小寫或兩者的混合,但這一點對用戶郵件名稱卻不一定是對的,因為有的主機對用戶名大小寫是敏感的。這樣SMTP實現中就將用戶郵箱名稱保留成初始時的樣子,主機名稱對大小寫不敏感。
命令與應答由ASCⅡ字母表組成,當傳送服務提供8位位元組傳送通道,每7位字元正確傳送,而最高位被填充為0。當指定一般的命令或應答格式後,參數會由一些類似於語言的字元串表示出來,如"<string>"或"<reverse-path>",這里尖括弧表示這是一種類似於語言的變數。
編輯本段3. SMTP過程
本節提供了SMTP中的一些過程。頭一個說明的是基本發送過程(定義為發送操作)。下來描述向前傳送郵件,確認郵箱名稱和擴展郵件列表,發送到終端和打開關閉交換。在本節的最後是對中斷,郵件域的說明。本節的例子只是一部分命令和應答的序列,完整的例子見附錄F。
3.1. MAIL
在SMTP發送操作中有三步,操作由MAIL命令開始給出發送者標識。一系列或更多的RCPT命令緊跟其後,給出了接收者信息,然後是DATA命令列出發送的郵件內容,最後郵件內容指示符確認操作。
過程中的第一步是MAIL命令,<reverse-path >;包括源郵箱。
MAIL <SP> FROM:<reverse-path><CRLF>
此命令告訴接收者新的發送操作已經開始,請復位所有狀態表和緩沖區。它給出反向路徑以進行錯誤信息返回。如果請求被接收,接收方返回一個250 OK應答。<reverse-path>;中不止包括了郵箱,它包括了主機和源郵箱的反向路由,其中的第一個主機就是發送此命令的主機。
過程中的第二步是發送RCPT命令。
RCPT <SP> TO:<forward-path> <CRLF>
此命令給出向前路徑標識接收者,如果命令被接收,接收方返回一個
250 OK應答,並存儲向前路徑。如果接收者未知,接收方會返回一個550 Failure應答。此過程可能會重復若干次。
<forward-path>;不僅包括郵件,它是主機和目的郵箱的路由表,在其中的第一個主機就是接收命令的主機。過程中的第三步是發送DATA命令。
DATA <CRLF>
如果命令被接收,接收方返回一個354 Intermediate應答,並認定以下的各行都是信件內容。當信件結尾收到並存儲後,接收者發送一個250 OK應答。因為郵件是在傳送通道上發送,因此必須指明郵件內容結尾,以便應答對話可以重新開始。SMTP通過在最後一行僅發送一個句號來表示郵件內容的結束,在接收方,一個對用戶透明的過程將此符號過濾掉,以不影響正常的數據。
注意:郵件內容包括如下提示:Date,Subject,To,Cc,From。
郵件內容指示符確認郵件操作並告知接收者可以存儲和再發送數據了。如果此命令被接收,接收方返回一個250 OK應答。DATA命令僅在郵件操作未完成或源無效的情況下失敗。
上面所述的過程是一個發送操作。這些命令只能以上面的順序使用。下例表示了在一個發送操作中這些命令的使用。
SMTP過程例子 此例是在Alpha..ARPA主機的Smith發送郵件給Beta..ARPA主機的Jones,Green和Brown的,這里假定主機Alpha與主機Beta直接相連。
S: MAIL FROM:<[email protected]>
R: 250 OK
S: RCPT TO:<[email protected]>
R: 250 OK
S: RCPT TO:<[email protected]>
R: 550 No such user here
S: RCPT TO:<[email protected]>
R: 250 OK
S: DATA
R: 354 Start mail input; end with<CRLF>.<CRLF>
S: Blah blah blah...
S: ...等等
S: <CRLF>.<CRLF>
R: 250 OK
此信被前兩個人接收,而第三個人在此主機上沒有郵箱。
3.2. 轉發
下面是一些<forward-path>;中目的地址不正確的,但接收者知道正確的目的地址的例子。在這些例子中,下列應答之一(251,551)應該允許發送方與獲得正確地址。
251:用戶不在本地;將向前發送到<forward-path>;。
這個應答意味著,接收方SMTP知道用戶的郵箱在另外的主機上,而且意味著將在未來使用正確的轉向路徑。請注意,主機或者用戶,或者它們兩者是不同的。接收方負責傳送消息。
551 :用戶非本地,請嘗試<forward-path>
這個應答意味著接收SMTP知道用戶的郵箱在另外的主機上,並意味著使用了正確的轉發路徑。注意請注意,主機或者用戶,或者它們兩者是不同的。接收方拒絕接收此用戶的信件,發送者必須根據提供的信息重新發送或者向原發送者返回錯誤信息。下例顯示了這些響應的應用。
轉發的例子
S: RCPT TO:<[email protected]>
R: 251 User not local; will forward to<[email protected]>
或者
S: RCPT TO:<[email protected]>
R: 551 User not local; please try<[email protected]>
3.3. 確認和擴展
SMTP提供了另外的確認用戶名和擴展郵件列表的功能。這些功能由VREF和EXPN命令完成,它們都以字元串為參數。對於VREF命令,字元串參數指的是用戶名,對此命令的響應要包括用戶的命名和用戶的郵箱。對於EXPN命令,字元串參數指的是郵件列表,對此命令的響應多於一個,它們要包括所有列表中用戶的命名和他們的郵箱。
「用戶名」是一個多餘的項目,它是故意被加上的。如果主機採用VREF命令和EXPN命令,最後本地郵箱必須提供用戶名使它被主機確認。如果主機選擇由另外的字元串作為用戶名,也是允許的。
在一些主機中,郵箱列表和一個郵箱的代名有一點不清楚,因為一般的數據結構可能包括兩種類型的入口。如果要發出對郵件列表的確認,應該給出確定響應。在接收到這個消息後,主機將把郵件傳送到列表上所有的地址上去,如果沒有接收到確定響應,就會報告錯誤。例如,
"550 That is a mail list,not a user name"。如果請求用於擴展一個用戶名,可能通過返回包括一個名字的列表來形成確定響應,如果沒有接收到確定響應,就會報告錯誤。(例如,"550 That is a user name,not a mailing list")。
在多個響應的情況下(通常是對於EXPN而言的),每個應答指定一個郵箱。在模糊請求的情況下,例如"VRFY Smith",這里兩個Smith的響應必須是"553 User ambiguous"。
確認用戶名的情況如下例所示:例3:
確認用戶名
S: VRFY Smith
R: 250 Fred Smith<[email protected]>
或者
S: VRFY Smith
R: 251 User not local; will forward to<[email protected]>
或者
S: VRFY Jones
R: 550 String does not match anything.
或者
S: VRFY Jones
R: 551 User not local; please try<Jones@USC-ISIQ.,ARPA>
或者
S: VRFY Gourzenkyinplatz
R: 553 User ambiguous.
郵箱列表要求多個響應的情況如下例所示:
S: EXPN Example-People
R: 250-Jon Postel <[email protected]>
R: 250-Fred Fonebone <[email protected]>
R: 250-Sam Q. Smith <SQSmith@USC-ISIQ.,ARPA>
R: 250-Quincy Smith<@USC-ISIF..ARPA:[email protected]>
R: 250-<[email protected]>
R: 250 <[email protected]>
或者
S: EXPN Executive-Washroom-List
R: 550 Access Denied to You.
VERF和EXPN命令的字元串命令參數因為具體實現的不同而不能再加以限制了。在一些系統上,EXPN命令的參數可能是一個包含郵件列表的文件名,但是在Internet上有許多不同的文件結構。
VRFY和EXPN命令在最小實現中並不包括,當它們實現時,它們也不要求被在傳送間實現。
編輯本段3.4. 發送信件和獲得信件
SMTP的主要目的是將郵件發送到用戶的郵箱中。由一些主機提供的類似的功能是把郵件送至用戶的終端(如果用戶正打開終端)。將郵件送到用戶的郵箱中稱為發送信件(mailing);而送至用戶終端則稱之為獲得信件
(sending)。因為在一些主機上,這兩者的實現十分類似,所以它們同時
被放入了SMTP中。然而,獲得信件命令在SMTP的最小實現中是沒有的。用戶應該具有控制向終端上寫信息的能力。大部分主機允許用戶接受或者拒絕類似的信息。
下面三個命令被定義來支持獲得信件。它們被用於郵件命令而不是MAIL
命令,指示接收SMTP這種操作的特殊意義:
SEND <SP> FROM:<reverse-path><CRLF>
SEND命令要求郵件內容直接傳送到用戶終端。如果用戶未打開終端(或
者未接收終端信息),450響應將返回一個RCPT命令。如果信息被成功發送,此操作成功。
SOML <SP> FROM:<reverse-path><CRLF>;
Send或者MaiL命令要求將郵件內容直接發送到用戶的終端上(如果用戶在終端上)。如果用戶不在終端上,郵件內容直接進入郵箱。如果郵件被發送到用戶終端或者用戶信箱,發送操作成功。
SAML <SP> FROM:<reverse-path><CRLF>
Send和MaiL命令要求郵件內容直接發送到用戶終端上(如果用戶在終端上)。不管怎麼樣,信件都會進入信箱。如果信件進入信箱,發送操作成功。
用於MAIL命令的響應和這些命令的響應相同。
編輯本段3.5. 打開和關閉
當打開傳送通道時,要交換一些信息以確定雙方的身份。以下的命令是
用於打開和關閉的:
HELO <SP> <domain> <CRLF>
QUIT <CRLF>
在HELLO命令中,主機自己發送命令,此命令可以被解釋為:「你好,
我是XX」。
打開聯結的例子
R: 220 BBN-UNⅨ..ARPA Simple Mail Transfer ServiceReady
S: HELO USC-ISIF..ARPA
R: 250 BBN-UNⅨ..ARPA
關閉聯結的例子
S: QUIT
R: 221 BBN-UNⅨ..ARPA Service closing transmissionchannel
編輯本段3.6. 轉發
轉發路徑可能是如下格式:"@ONE,@TWO:JOE@THREE",在這里,ONE,TWO
和THREE是主機。這種格式用於強調地址和路徑的區別。郵箱是絕對地址,路徑是關於如何到達的信息。這兩個概念不應該被混淆。
概念上,轉發路徑的元素被移動到回復路徑作為從一個SMTP伺服器到另一個SMTP伺服器的信息。回復路徑是一個反向數據源路徑,例如從當前信息的位置到發起者的位置。當一個SMTP伺服器從轉發路徑中刪除自己的標記並將它插入到回復路徑中時,它必須使用它發送環境能夠理解的名稱來進行,以防它的名稱在不同的環境中被理解為不同的名字。
如果當SMTP接收到信息的轉發路徑的第一個元素不是此SMTP的標記時,此元素不從轉發路徑中刪除,而被用來決定下一個應該發送到的SMTP伺服器。在任何情況下,SMTP都將自己的標記加入反向路徑中。
使用源路徑時,接收SMTP接收轉發的郵件並發送到另一接收SMTP伺服器上。接收伺服器可以接受或拒絕轉發本地用戶的郵件。接收SMTP通過將它自己的標記從轉發路徑移至回復路徑的開始處來改變命令參數。這時,接收SMTP變成了發送SMTP,也就建立了到下一個轉發路徑中SMTP的通道,然後,它向這個SMTP發送郵件。
在回復路徑上的頭一個主機應是發送SMTP命令的主機,在轉發路徑上第一個主機應是接收SMTP命令的主機。
注意:轉發路徑和回復路徑出現在SMTP命令和應答中,但不一定要出現在信
息中。也就是說,沒有必須要這樣的路徑特別這種格式出現在信息頭的"To:","From:"和"CC:"等域中。
如果SMTP伺服器接受了轉發任務,但後來它發現因為轉發路徑不正確或者其它原理無法發送郵件,它必須建立一"undeliverable mail"信號,將此信號送到此信的發主者那裡。
此信號必須是從此主機的SMTP服務上發出的,當然了,此伺服器不應該再報告出錯信息的錯誤。一種阻止這種出錯報告循環的情況是在信號的郵件命令的回復路徑上置空。在傳送此信息時,允許將回復路徑也置為空。一個MAIL命令後的回復路徑為空表現為如下形式:
MAIL FROM:<>
下例中顯示了不可傳送的郵件信息。此信息是對從HOSTW上的JOE發出的郵件經過在HOSTX需要經過HOSTZ到達HOSTY時出錯的回應。我們看到的例子是在HOSTX和HOSTY之間發生的。
不可傳送郵件信息的例子
S: MAIL FROM:<>
R: 250 ok
S: RCPT TO:<@HOSTX..ARPA:[email protected]>
R: 250 ok
S: DATA
R: 354 send the mail data,end with .
S: Date: 23 Oct 81 11:22:33
S: From: [email protected]
S: To: JOE@HOSTW,.ARPA
S: Subject: Mail System Problem
S: Sorry JOE,your message to [email protected] lost.
S: HOSTZ..ARPA said this:
S: "550 No Such User"
S: .
R: 250 ok
編輯本段常見問題
⒈ SMTP是什麼?有什麼作用?答: SMTP是Simple Mail Transfer Protocol的縮寫,即簡單郵件傳輸協議,是一種提供有效可靠傳送電子郵件的協議,用於在兩台郵件伺服器間交換郵件.
⒉ 郵件伺服器間郵件傳輸使用了TCP協議,為何郵件有時還會丟失?
答: 郵件伺服器之間的SMTP協議使用TCP連接,可以保證郵件准確無誤地在郵件伺服器之間傳輸. 但由於郵件伺服器本身的故障,例如郵件空間不足等,會導致郵件無法完成傳輸而導致丟失.
⒊ 發件人用戶代理為何不直接將郵件發送給收件人的用戶代理,而是通過郵件伺服器來傳輸?
答: 因為用戶電腦性能的限制,無法運行收發郵件的程序,並且無法不間斷地運行並連接到互聯網上. 因此只能將信件暫時存放在郵件伺服器中,用戶需要時就可以去下載信件.
5. VB串口通訊一次性發送多個命令為什麼程序會一起處理
網路傳輸過程涉及的因素很多,也很復雜,因此是不可能按照你設定的時限來實現精確的定時發送和接受的(就好比你瀏覽一個網頁,不可能每次打開的速度都完全一樣吧?甚至還可能會出現無法打開的時候),它採用的實際上是緩沖區的方式,也就是說發送方會用一個緩沖區來存儲你需要發送的數據,達到指定的數量後它就會一次性發送給接收方,接收方也一樣,使用一個緩沖區來接收數據,達到指定數量後再通知系統,這樣的話你所謂的時間間隔就完全失去作用了!
正確的方法應該用應答的方式,就是發送方發送一個命令後,接收方接收命令並處理完畢後,要給發送方回復一個命令表示前一命令已處理完畢,這時候發送方再發送下一個命令,這樣就能保證每一個命令都能接收到並得到處理,同時也能及時檢測到網路阻塞等故障。
6. HART、FF協議的具體內容是什麼
1。HART(Highway Addressable Remote Transcer),可定址遠程感測器高速通道的開放通信協議,是美國Rosement公司於1985年推出的一種用於現場智能儀表和控制室設備之間的通信協議。 HART裝置提供具有相對低的帶寬,適度響應時間的通信,經過10多年的發展,HART技術在國外已經十分成熟,並已成為全球智能儀表的工業標准。
HART協議採用基於Bell202標準的FSK頻移鍵控信號,在低頻的4-20mA模擬信號上疊加幅度為0.5mA的音頻數字信號進行雙向數字通訊,數據傳輸率為1.2Mbps。由於FSK信號的平均值為0,不影響傳送給控制系統模擬信號的大小,保證了與現有模擬系統的兼容性。在HART協議通信中主要的變數和控制信息由4-20mA傳送,在需要的情況下,另外的測量、過程參數、設備組態、校準、診斷信息通過HART協議訪問。
HART通信採用的是半雙工的通信方式,其特點是在現有模擬信號傳輸線上實現數字信號通信,屬於模擬系統向數字系統轉變過程中過渡性產品,因而在當前的過渡時期具有較強的市場競爭能力,得到了較快發展。HART 規定了一系列命令,按命令方式工作。它有三類命令,第一類稱為通用命令,這是所有設備都理解、都執行的命令;第二類稱為一般行為命令,所提供的功能可以在許多現場設備(盡管不是全部)中實現,這類命令包括最常用的的現場設備的功能庫;第三類稱為特殊設備命令,以便於工作在某些設備中實現特殊功能,這類命令既可以在基金會中開放使用,又可以為開發此命令的公司所獨有。在一個現場設備中通常可發現同時存在這三類命令。
HART採用統一的設備描述語言DDL。現場設備開發商採用這種標准語言來描述設備特性,由HART基金會負責登記管理這些設備描述並把它們編為設備描述字典,主設備運用DDL技術來理解這些設備的特性參數而不必為這些設備開發專用介面。但由於這種模擬數字混合信號制,導致難以開發出一種能滿足各公司要求的通信介面晶元。HART能利用匯流排供電,可滿足本質安全防爆要求,並可組成由手持編程器與管理系統主機作為主設備的雙主設備系統。
2。基金會現場匯流排,即FoudationFieldbus,簡稱FF。它以ISO/OSI開放系統互連模型為基礎,取其物理層、數據鏈路層、應用層為FF通信模型的相應層次,並在應用層上增加了用戶層。
基金會現場匯流排分低速H1和高速H2兩種通信速率。H1的傳輸速率為 3125Kbps,通信距離可達 1900m (可加中繼器延長),可支持匯流排供電,支持本質安全防爆環境。H2的傳輸速率為 1Mbps和 2.5Mbps兩種,其通信距離為750m和500m。物理傳輸介質可支持比絞線、光纜和無線發射,協議符合IEC1158-2標准。其物理媒介的傳輸信號採用曼徹斯特編碼,每位發送數據的中心位置或是正跳變,或是負跳變。正跳變代表0,負跳變代表1,從而使串列數據位流中具有足夠的定位信息,以保持發送雙方的時間同步。接收方既可根據跳變的極性來判斷數據的「1」、「0」狀態,也可根據數據的中心位置精確定位。
7. 數據通信時,如果接收方的接收能力小於發送方的發送能力,則需要進行
這們朋友,我沒有聽懂你的意思,你是不是想問如果兩台主機通信時,接收方的接收能力小於發送方的發送能力,則接收方會作出什麼反應?如果是的話,那麼會它會作出以下的反應:
你先想一下,兩台主機通信時,發送方需要向接收方發送一數據包,這個數據包中都包含什麼?當然,這個數據包是由:目標IP地址、源IP地址、目標MAC地址、源MAC地址組成。當發送方的帶寬大於接收方時,那麼接收方會發出一個信號,告訴發送方,信道堵塞,然後,它們會協商一個發送數據的帶寬,使他們的接收能力和發送能力基本上一致。這里我所說的是使用的TCP協議。
如果是使用的UDP傳輸協議的話,那麼他們之間就不用協商了,因為UDP是不可靠傳輸。
當然,這時你使用下面的命令,在帶寬大的主機上向帶寬小的主機狂發數據包,也會把帶寬小的主機搞垮的。這個命令是:ping ip地址 -t
例如,帶寬小的主機IP地址是172.16.0.1的話,那麼你就可以這樣使用這個命令:ping 172.16.0.1 -t
要不了多久,它就會被ping 垮的。不信你試試。
8. SMTP是如何如何轉發郵件的呢
電子郵件在Internet上發送和接收的原理可以很形象地用我們日常生活中郵寄包裹來形容:當我們要寄一個包裹時,我們首先要找到任何一個有這項業務的郵局,在填寫完收件人姓名、地址等等之後包裹就寄出而到了收件人所在地的郵局,那麼對方取包裹的時候就必須去這個郵局才能取出。同樣的,當我們發送電子郵件時,這封郵件是由郵件發送伺服器(任何一個都可以)發出,並根據收信人的地址判斷對方的郵件接收伺服器而將這封信發送到該伺服器上,收信人要收取郵件也只能訪問這個伺服器才能完成。
1. 電子郵件的發送
SMTP是維護傳輸秩序、規定郵件伺服器之間進行哪些工作的協議,它的目標是可靠、高效地傳送電子郵件。SMTP獨立於傳送子系統,並且能夠接力傳送郵件。
SMTP基於以下的通信模型:根據用戶的郵件請求,發送方SMTP建立與接收方SMTP之間的雙向通道。接收方SMTP可以是最終接收者,也可以是中間傳送者。發送方SMTP產生並發送SMTP命令,接收方SMTP向發送方SMTP返回響應信息。
連接建立後,發送方SMTP發送MAIL命令指明發信人,如果接收方SMTP認可,則返回OK應答。發送方SMTP再發送RCPT命令指明收信人,如果接收方SMTP也認可,則再次返回OK應答;否則將給予拒絕應答(但不中止整個郵件的發送操作)。當有多個收信人時,雙方將如此重復多次。這一過程結束後,發送方SMTP開始發送郵件內容,並以一個特別序列作為終止。如果接收方SMTP成功處理了郵件,則返回OK應答。
對於需要接力轉發的情況,如果一個SMTP伺服器接受了轉發任務,但後來卻發現由於轉發路徑不正確或者其他原因無法發送該郵件,那麼它必須發送一個「郵件無法遞送」的消息給最初發送該信的SMTP伺服器。為防止因該消息可能發送失敗而導致報錯消息在兩台SMTP伺服器之間循環發送的情況,可以將該消息的回退路徑置空。
2. 電子郵件的接收
電子郵件協議第3版本(POP3)
要在網際網路的一個比較小的節點上維護一個消息傳輸系統(MTS,Message Transport System)是不現實的。例如,一台工作站可能沒有足夠的資源允許SMTP伺服器及相關的本地郵件傳送系統駐留且持續運行。同樣的,要求一台個人計算機長時間連接在IP網路上的開銷也是巨大的,有時甚至是做不到的。盡管如此,允許在這樣小的節點上管理郵件常常是很有用的,並且它們通常能夠支持一個可以用來管理郵件的用戶代理。為滿足這一需要,可以讓那些能夠支持MTS的節點為這些小節點提供郵件存儲功能。POP3就是用於提供這樣一種實用的方式來動態訪問存儲在郵件伺服器上的電子郵件的。一般來說,就是指允許用戶主機連接到伺服器上,以取回那些伺服器為它暫存的郵件。POP3不提供對郵件更強大的管理功能,通常在郵件被下載後就被刪除。更多的管理功能則由IMAP4來實現。
郵件伺服器通過偵聽TCP的110埠開始POP3服務。當用戶主機需要使用POP3服務時,就與伺服器主機建立TCP連接。當連接建立後,伺服器發送一個表示已准備好的確認消息,然後雙方交替發送命令和響應,以取得郵件,這一過程一直持續到連接終止。一條POP3指令由一個與大小寫無關的命令和一些參數組成。命令和參數都使用可列印的ASCII字元,中間用空格隔開。命令一般為3~4個字母,而參數卻可以長達40個字元。
網際網路報文訪問協議第4版本(IMAP4)
IMAP4提供了在遠程郵件伺服器上管理郵件的手段,它能為用戶提供有選擇地從郵件伺服器接收郵件、基於伺服器的信息處理和共享信箱等功能。IMAP4使用戶可以在郵件伺服器上建立任意層次結構的保存郵件的文件夾,並且可以靈活地在文件夾之間移動郵件,隨心所欲地組織自己的信箱,而POP3隻能在本地依靠用戶代理的支持來實現這些功能。如果用戶代理支持,那麼IMAP4甚至還可以實現選擇性下載附件的功能,假設一封電子郵件中含有5個附件,用戶可以選擇下載其中的2個,而不是所有。
與POP3類似,IMAP4僅提供面向用戶的郵件收發服務。郵件在網際網路上的收發還是依靠SMTP伺服器來完成。
[電子郵件地址的構成]
電子郵件地址的格式由三部分組成。第一部分「USER」代表用戶信箱的賬號,對於同一個郵件接收伺服器來說,這個賬號必須是唯一的;第二部分「@」是分隔符;第三部分是用戶信箱的郵件接收伺服器域名,用以標志其所在的位置。
9. 如何發送E-mail
電子郵件是靠SMTP發送的。SMTP基於以下的通信模型:根據用戶的郵件請求,發送方SMTP建立與接收方SMTP之間的雙向通道。接收方SMTP可以是最終接收者,也可以是中間傳送者。發送方SMTP產生並發送SMTP命令,接收方SMTP向發送方SMTP返回響應信息。
連接建立後,發送方SMTP發送MAIL命令指明發信人,如果接收方SMTP認可,則返回OK應答。發送方SMTP再發送RCPT命令指明收信人,如果接收方SMTP也認可,則再次返回OK應答;否則將給予拒絕應答(但不中止整個郵件的發送操作)。
SMTP基於以下的通信模型:根據用戶的郵件請求,發送方SMTP建立與接收方SMTP之間的雙向通道。接收方SMTP可以是最終接收者,也可以是中間傳送者。發送方SMTP產生並發送SMTP命令,接收方SMTP向發送方SMTP返回響應信息。
當有多個收信人時,雙方將如此重復多次。這一過程結束後,發送方SMTP開始發送郵件內容,並以一個特別序列作為終止。如果接收方SMTP成功處理了郵件,則返回OK應答。
對於需要接力轉發的情況,如果一個SMTP伺服器接受了轉發任務,但後來卻發現由於轉發路徑不正確或者其他原因無法發送該郵件,那麼它必須發送一個「郵件無法遞送」的消息給最初發送該信的SMTP伺服器。
10. hyperlink mailto是什麼意思
hyperlink mailto是:工具 → 選項 → 視圖→ 取消「域代碼」前面的√ → 確定。
也可以相同網頁上的不同位置,還可以是一個圖片,一個電子郵件地址,一個文件,甚至是一個應用程序。而在一個網頁中用來超鏈接的對象,可以是一段文本或者是一個圖片。當瀏覽者單擊已經鏈接的文字或圖片後,鏈接目標將顯示在瀏覽器上,並且根據目標的類型來打開或運行。
電子郵件的發送:
維護傳輸秩序、規定郵件伺服器之間進行哪些工作的協議,它的目標是可靠、高效地傳送電子郵件。SMTP獨立於傳送子系統,並且能夠接力傳送郵件。
SMTP基於以下的通信模型:根據用戶的郵件請求,發送方SMTP建立與接收方SMTP之間的雙向通道。接收方SMTP可以是最終接收者,也可以是中間傳送者。發送方SMTP產生並發送SMTP命令,接收方SMTP向發送方SMTP返回響應信息。