STM32F103C8'e ethernet çipi bağlamak

Başlatan z, 17 Eylül 2016, 18:33:38

Burak B

Bu normal çünkü doğrusu -Ostinato- olucak. Yazım hatası yapmışım. Ama bu bir engel değil. Google araması yapınca zaten düzeltip söylüyor ne olduğunu.

https://www.picproje.org/index.php/topic,65601.msg511141/topicseen.html#msg511141

https://www.picproje.org/index.php/topic,65601.msg511163/topicseen.html#msg511163

https://www.picproje.org/index.php/topic,65601.msg511183.html#msg511183

Alıntı yapılan: Burak B - 01 Ekim 2016, 13:47:07
Osinato' yu kullanın. Hercules' e çok güvenmeyin. Hatta kendi socket kodunuzu yazmanız daha iyidir.

Bunlar dışında birkaç farklı şekilde daha söylediğimi hatırlıyorum bu uygulamayı kullanın diye.
...
"... a healthy dose of paranoia leads to better systems." Jack Ganssle

CaFFeiNe


Burak B

@CaFFeiNe, özür dilecenecek biri durum yok. Rica ederim.
"... a healthy dose of paranoia leads to better systems." Jack Ganssle

z

#348
TCP'de handshake işlemleri için Stack yazmak kaçınılmaz oldu.

Explorer Serverdan talepte bulunuyor.

Server de, bak bendeki sayfa bu, boyu bu yolluyorum ve bana alıp almadığını bildir sonrasında bir daha arama kapat diyor.

1) Explorer  tamam yolladığın dataları aldım. (Paket1)
2) Hani bana kapat demiştin ya tamam kapattım.  (Paket2)

Bu esnada başka başka explorerlardan da benzer talepler alıyor.

Server peşpeşe cevaplar gelmeye başlıyor....
Ulan bu cevap veren de kim ben bir sürü kişiyle konuşmuştum keşke bir çetele tutsaymışım diyor. (Cevap verenin kim olduğu IP den belli fakat konuşurken yaa nerde kalmıştık deriz ya benzer durum. Aslında bu bilgi de seq no ve ack no da belli ama kendi seq no ve ack no muzu bilmemiz lazım. o geçmişte kaldı giitti. Saklamamız lazımdı)

Explorerlar farklı farklı uzaklıklarda farklı farklı ülkelerden cevap yollayınca 1 explorerdan gelen 2 paket peşpeşe değil bir başka explorerdan gelen paketle sandiviçlenebilir. (1. Explorer 1. paket) + (2. Explorer 1. paket) +(1. Explorer 2. paket) gibi sıralama her an değişebilir.

Sonra da ulan bu tamam kapattım dedi de kimdi bu sorusu gündeme geliyor.

Sonuç olarak bir explorer ile bağlantı kurulduktan sonra bazı bilgileri bir alana yazmalı. Bir kaç explorerla konusmaya baslayınca bunlarla ilgili çeteleler basit bir alana değil bir 'aray'a atmalı. Bu array stağımız oluyor.

Daha sonra bir paket geldimi paketi yollayan ile ilgili geçmiş kayıtların bu arraydan aranıp bulunması, kayıda ilave yapılması yada update edilmesi ya da toptan imha edilmesi gibi ek işler geliyor.

State machine, stack, stacktaki veriler arasında ilişkilendirme işi yapılacak.

Tam bir curcuna ile karşı karşıyayım.

Tek bir server ve tek bir Client oldumu klasik basit bir mantık yeterli. Serverle iki kişi konuşmaya başladımı işler de karışıklaşmaya başlıyor.

Öğretmen sınıfta her kafadan bir ses çıktımı kızar tek tek konuşun der. Burda öyle deme şansımız yok. Öyle dersek internet alt yapısını çok kötü kullanır ve çok yavaş haberleşme yaparız.

Sen en son şöyle demiştin şöyle yap. Sen diğeri dataları almamışsın al tekrar yolluyorum. Hey sen diğeri. Tamam hattı kapatma isteğini kabul ettim. Gibi muhabbetler.

İncelediğim github projelerinde bu konulara hiç girilmemiş ve sanki serverin karşısında tek bir explorer var hiç paket kaybolmuyor hiç paket bozulmuyor kabullerini yapmışlar. Üstelik web sayfasının tek bir TCP pakete sığacak kadar da kısa olacağı varsayılmış.

En başta basit bir web server yapalım diye yola çıkmıştık ya. Kesmedi. Çıtayı yükseltmek lazım.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

Aşağıda sadece cerver ve bir client arasındaki TCP paket muhabbetleri var. Şimdi bu paketlerin arasına diğer clientlarla yapılan paketler de girdiğinde işler karmaşıklaşıyor.



http://www.cncdesigner.com/wordpress/?p=6362
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

engerex

#350
 @z Peki bu nasıl olacak? Hangi paketin kimden geldiğini nasıl takip edeceksiniz. Özellikle şunun için soruyorum. Senin sunucun ile aynı bilgisayardan 1'den fazla istemci ile iletişim kurmaya çalışıldı. Burada aynı bilgisayardan farklı talepler geliyor. Bu sıkıntı yaratır mı?
(düzenlendi)

z

#351
Bizim  çipten aldığımız paket ethernet paket.

Onu açıyoruz içinden IP paket çıkıyor.

Onu açıyoruz içinden TCP paket çıkıyor.

MAC adres ethernet pakketten çıkıyor. IP adres IP paketten çıkıyor.

Aşağıdaki yazımı editleyeceğim. Orda MAC adresinden bahsetmem yanlış oldu.

Belki blog sayfamdaki yazıları da editlemem lazım. Çünkü IP pakette identification diye bir alan var. Onu kullanmıyoruz diye açıkladım. Zira mini severimi çalıştırdığımda sadece tek client ile çalışıyordu. O alana da ihtiyacım yoktu.

Bu işi bilen arkadaşlar en baştan bir giriş yapsalardı bazı şeyleri çözmek için bu kadar tırmalamayacaktık.

Mesela aşağıdaki tabloyu sırf handshake ipuçlarını yakalayıp algoritmayı yazabilmek için deneysel olarak elde ettim.

Tek server tek clientdaki IP ve TCP rutinlerim şu andan itibaren yeniden elden geçecek.

Alıntı YapSonlanan bağlantılar sonrası tekrar aynı bağlantı sağlanırsa veya yeni bağlantı sağlanırsa ack ve seq numaraları kaldığı yerden mi devam ediyor?

Aynı client aynı server linki kapatıp ardından tekrar link kurarlarsa bile bu numaralar farklı değer alıyor.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

#352
Tek client ile çalışırken web servere paketler olması gereken sırada geliyor

iki ayrı client ile çalışmak ve paketleri iç içe geçirip serverı zorlamak istiyorum. Bunu nasıl yapacağım. (state machine'ı debug etmem lazım)

Paket(A1), Paket(A2) 1. clienttan gelebilecek peşpeşe paketler olsun.
Paket(B1), Paket(B2) 2 clienttan gelebilecek peşpeşe paketler olsun.

Paketler A1, A2, B1, B2 şeklinde gelirse zaten sorun yok

Fakat ben A1, B1, B2, A2 ya da A1, B1, A2, B2 şeklinde gelsin istiyorum.

Aslında explorerlardan birisini çok yavaşlatabilsem de çözüm olabilir.

Çözüm öneriniz varmı?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

#353
Şimdi gelen/giden paketlerle ilgili bir çetele tutmak istiyorum.

Öncelike sorundan bahsedeyim.

Serverdan A kullanıcısının explorerına PSH + ACK flağa sahip bir paket yolladım. A explorerı bana birazdan buna ilişkin ACK yollayacak.

Daha henüz gelmemişken bir başka B kullanıcısından daha önce gönderdiğim bir pakete ilişkin ACK gelecek.

Şimdi bu gelen ACK A'dan mı geldi B'denmi anlamam lazım.

Tutacağım çetelede neler olmalı bilemiyorum.

Aslında şu sorunun cevabı daha önemli.

Bir TCP paket (Etherner + IP + TCP) dünyanın diğer ucuna doğru yol alırken aradaki iletişim cihazları bu paketin nereleri ile oynarlar.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com