Titan專(zhuān)欄

          用文字來(lái)整理生命

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            44 隨筆 :: 49 文章 :: 19 評(píng)論 :: 0 Trackbacks

          最近在論壇上的一些朋友問(wèn)腳本方面的問(wèn)題,比如用lr的winsock協(xié)議錄制的腳本遇回放過(guò)程中遇到如下錯(cuò)誤

          Action.c(20): Error : callConnect - Can't assign requested address. Error code : 10049.
          Action.c(20): Error : Timeout expired while trying to connect. Error code : 9017.

          這里的10049是udp協(xié)議錯(cuò)誤,是腳本沒(méi)有和服務(wù)器同步,這說(shuō)明什么問(wèn)題呢。下邊我用一個(gè)協(xié)議進(jìn)行分析,來(lái)看看到底是什么問(wèn)題,
          smtp協(xié)議分析:

          1.SMTP工作方式有兩種情況:一是電子郵件從客戶(hù)機(jī)傳輸?shù)椒?wù)器;二是從某一個(gè)服務(wù)器傳輸?shù)搅硪粋€(gè)服務(wù)器.
          2.SMTP是個(gè)請(qǐng)求/響應(yīng)協(xié)議,命令和響應(yīng)都是基于ASCII文本,并以CR和LF符結(jié)束。響應(yīng)包括一個(gè)表示返回狀態(tài)的三位數(shù)字代碼.
          3.SMTP在TCP協(xié)議25號(hào)端口監(jiān)聽(tīng)連接請(qǐng)求
          4.連接和發(fā)送過(guò)程:

          a.建立TCP連接
          b.客戶(hù)端發(fā)送HELO命令以標(biāo)識(shí)發(fā)件人自己的身份,然后客戶(hù)端發(fā)送MAIL命令
          服務(wù)器端正希望以O(shè)K作為響應(yīng),表明準(zhǔn)備接收
          c.客戶(hù)端發(fā)送RCPT命令,以標(biāo)識(shí)該電子郵件的計(jì)劃接收人,可以有多個(gè)RCPT行
          服務(wù)器端則表示是否愿意為收件人接受郵件
          d.協(xié)商結(jié)束,發(fā)送郵件,用命令DATA發(fā)送
          e. 以.表示結(jié)束輸入內(nèi)容一起發(fā)送出去
          f.結(jié)束此次發(fā)送,用QUIT命令退出。

          5.另外兩個(gè)命令:
          VRFY---用于驗(yàn)證給定的用戶(hù)郵箱是否存在,以及接收關(guān)于該用戶(hù)的詳細(xì)信息。
          EXPN---用于擴(kuò)充郵件列表。

          6.郵件路由過(guò)程:
          SMTP服務(wù)器基于‘域名服務(wù)DNS中計(jì)劃收件人的域名來(lái)路由電子郵件。SMTP服務(wù)器基于DNS中的MX記錄來(lái)路由電子郵件,MX記錄注冊(cè)了域名和相關(guān)的SMTP中繼主機(jī),屬于該域的電子郵件都應(yīng)向該主機(jī)發(fā)送。

          若SMTP服務(wù)器mail.withub.org收到一封信要發(fā)到pcl@withub.org

          a.Sendmail請(qǐng)求DNS給出主機(jī)withub.org的CNAME記錄,如有,假若CNAME到mail.withub.org,則再次請(qǐng)求mail.withub.org的CNAME記錄,直到?jīng)]有為止.
          b.假定被CNAME到mail.withub.org,然后sendmail請(qǐng)求@withub.org域的DNS給出mail.withub.org的MX記錄,
          shmail MX 5 mail.withub.org
          10 shmail2.withub.org
          c. Sendmail最后請(qǐng)求DNS給出shmail.withub.org的A記錄,即IP地址,若返回值為1.2.3.4
          d. Sendmail與1.2.3.4連接,傳送這封給pcl@withub.org的信到1.2.3.4這臺(tái)服務(wù)器的SMTP后臺(tái)程序

          這里是協(xié)議的一個(gè)解析過(guò)程,我們要看看,利用lr錄制腳本后然后回放,錄制的過(guò)程中mail.withub.org返回客戶(hù)端服務(wù)器上有多少給用戶(hù)的郵件,lr把這個(gè)數(shù)字保存下來(lái),最為下次回放的時(shí)候?qū)Ρ取.?dāng)你第二次回放的時(shí)候,lr模擬客戶(hù)端發(fā)送請(qǐng)求,這時(shí)候服務(wù)器上沒(méi)有了新郵件,返回可能是0,lr把這個(gè)返回值和當(dāng)時(shí)錄制的腳本保存的返回值進(jìn)行對(duì)比(那個(gè)時(shí)候可能服務(wù)器上有3個(gè)新的郵件,服務(wù)器返回的值是3),明顯這個(gè)值是動(dòng)態(tài)變化的。你的腳本如果沒(méi)有經(jīng)過(guò)修改,肯定是回返不成功的。

          那么上邊提到的錯(cuò)誤信息,同樣的道理,我們要分析一下到底是什么問(wèn)題,從協(xié)議上分析,從系統(tǒng)環(huán)境上分析。

          解決方法,動(dòng)態(tài)關(guān)聯(lián)

          1.用同樣的用戶(hù)操作同樣的步驟兩次,然后用lr工具wdiff進(jìn)行腳本對(duì)比,找出不同的地方!

          2.用lr自動(dòng)關(guān)聯(lián)

          3.手工關(guān)聯(lián),找到要替換的動(dòng)態(tài)數(shù)據(jù)進(jìn)行替換

          posted on 2006-01-01 22:33 Titan 閱讀(279) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): 性能測(cè)試
          主站蜘蛛池模板: 平凉市| 长泰县| 镶黄旗| 于田县| 桃园县| 西贡区| 修水县| 永靖县| 普兰店市| 清新县| 喀什市| 张家港市| 三亚市| 大荔县| 墨玉县| 古交市| 寻乌县| 宜春市| 吉水县| 沭阳县| 抚顺县| 盖州市| 时尚| 杂多县| 个旧市| 靖西县| 濉溪县| 五寨县| 潼关县| 揭东县| 肃宁县| 临高县| 土默特右旗| 广宗县| 十堰市| 乌什县| 西乌珠穆沁旗| 白沙| 内丘县| 青阳县| 高青县|