Picproje Elektronik Sitesi

SERBEST BÖLGE => Programlama ve Algoritma => Konuyu başlatan: z - 17 Eylül 2016, 12:48:18

Başlık: TCPIP vs konularında bir hoca çıksa da forum içi eğitim verse
Gönderen: z - 17 Eylül 2016, 12:48:18
Nesnelerin interneti vs artık kaçınılmaz.

Kendi TCPIP kodlarımızı yazabilmek için konulara damardan girmek isteyenlere hitaben  TCPIP vs konularında forum içi eğitim verecek cengaverimiz yokmudur?

TCPIP nedir paket nedir nelerden oluşur formatı nasıldır vs vs....


Başlık: Ynt: TCPIP vs konularında bir hoca çıksa da forum içi eğitim verse
Gönderen: ByTEK - 17 Eylül 2016, 13:07:05
@z hocam TCP/IP için sıfırdan kod yazmanın zahmetli olacağını düşünüyorum. gerçi sizin ne kadar istekli olduğunuzu biliyorum.

Daha önce bir kaç hobi amaçlı arduino ile çalışmam olmuştu ama maalesef kütüphane kullanmıştım.

ilavetten aşağıdaki kitabı almıştım. İçinde arduino ve ESP8266 wireless modül ile neler yapılabileceğini anlatıyor.

http://www.idefix.com/Kitap/ESP8266-ve-Arduino-ve-Nesnelerin-Interneti/Hasbi-Sevinc/Egitim-Basvuru/Bilgisayar/urunno=0000000677246?gclid=Cj0KEQjw0_O-BRCfjsCw25CYzYoBEiQAqO9BDM9O3FevIBdbWY9ZJjwnUxPUZkvo7Eimg_Nk6PhKSNMaAqtY8P8HAQ (http://www.idefix.com/Kitap/ESP8266-ve-Arduino-ve-Nesnelerin-Interneti/Hasbi-Sevinc/Egitim-Basvuru/Bilgisayar/urunno=0000000677246?gclid=Cj0KEQjw0_O-BRCfjsCw25CYzYoBEiQAqO9BDM9O3FevIBdbWY9ZJjwnUxPUZkvo7Eimg_Nk6PhKSNMaAqtY8P8HAQ)

Barış beyin hazırladığı bir Kaynak daha önce verilmişti ama yeniden verelim  : http://www.barissamanci.net/Makale/3/microchip-stack-v520-yaptiginiz-donanimlari-dunyaya-acin/ (http://www.barissamanci.net/Makale/3/microchip-stack-v520-yaptiginiz-donanimlari-dunyaya-acin/)

Başlık: Ynt: TCPIP vs konularında bir hoca çıksa da forum içi eğitim verse
Gönderen: z - 17 Eylül 2016, 13:07:50
Muhakkak zahmetlidir ama olsun.
Başlık: Ynt: TCPIP vs konularında bir hoca çıksa da forum içi eğitim verse
Gönderen: M_B - 17 Eylül 2016, 13:44:53
@z hocam iyi bir konuya parmak bastınız.
Şimdi bizleri bilgilendirecek gönüllü bir ustaya ihtiyacımız var.
Bu başlığı takipteyim. Bekliyorum
Başlık: Ynt: TCPIP vs konularında bir hoca çıksa da forum içi eğitim verse
Gönderen: z - 17 Eylül 2016, 13:50:18
Bir hoca bekliyoruz. İnternetten merak ettiğim soruların cevabını bulup buraya da yazıyorum.


TCP/IP neyin kısaltmasıdır?

Transmission Control Protocol/Internet Protocol.

TCP/IP ne iş yapar nerede kullanılır?

TCP/IP protokolleri bilgisayarlar arası veri iletişiminin kurallarını koyar.

Farklı tipteki bilgisayarlarla network ortamı kurmaya yarar.

TCP/IP Nasıl bir protokoldür?

Yapı olarak iki katmanlı bir haberleşme protokolüdür.  ( !!!! Kimi dokümanlarda 4 katmandan bahsediliyor !!!!)

Üst Katman TCP(Transmission Control Protocol) verinin iletimden önce paketlere ayrılmasını ve karşı tarafta bu paketlerin yeniden düzgün bir şekilde birleştirilmesini sağlar.

Alt Katman IP (Internet Protocol) ise, iletilen paketlerin istenilen ağ adresine yönlendirilmesini kontrol eder.

TCP/IP Protokülünde İletişim Nasıl Kurulur?

TCP/IP, kullanılan ağlarda her bilgisayarın bir IP adresi vardır. Bu adresler paketlerin hedeflerine ulaşmasını sağlar. Her TCP/IP paketine, hedefe ulaştırılabilmesi için, alıcının IP adresi ve geri paket yollanabilmesi için göndericinin adresi yazılır. Yazılan adresler, gönderici ile alıcı bilgisayar arasındaki olası router cihazları tarafından okunup hedefine doğru yönlendirilir.



mesaj birleştirme:: 17 Eylül 2016, 14:13:43

TCP/IP Çalışma Esasları

TCP'nin çalışma esası üç faz altında incelenebilir:

1) Öncelikle hedefle bir bağlantı gerçekleşir.
2) Bağlantı gerçekleştikten sonra veri transferi yapılır.
3) Veri transferi yapıldıktan sonra da bağlantı sona erdirilir.

TCP'de bu üç fazın gerçekleşmesi için bazı ara durumlar (state) tanımlanmıştır. Bu durumlar aşağıdaki gibidir.

LISTEN:   (sunucu) İstemci tarafından bir TCP bağlantı isteğinin beklenildiği durum
SYN-SENT : (istemci) Karşı tarafa TCP bağlantısı isteği gönderildikten sonra karşı taraftan bağlantı isteğine cevap beklenilen durum
SYN-RECEIVED: (sunucu) İstemci tarafından SYN bayrağı ile yapılan bağlantı isteğine sunucunun SYN-ACK bayrağı ile cevap vermesinden sonraki bekleme durum
ESTABLISHED : (sunucu ve istemci) Bağlantı kurulduktan sonraki veri transferinin yapıldığı durum
FIN-WAIT-1: (sunucu ve istemci)
FIN-WAIT-2: (sunucu ve istemci) karşı taraftan TCP bağlantısının bitirilme isteğinin beklendiği durum
CLOSE-WAIT: (sunucu ve istemci)
CLOSING: (sunucu ve istemci) Karşı tarafa bağlantının bitirlmesine dair bir ACK bayrağı gönderildikten sonra bağlantının bitmesini bekleme durumu
LAST-ACK: (sunucu ve istemci)
TIME-WAIT :(sunucu ve istemci)
CLOSED: (sunucu ve istemci) TCP bağlantısının tamamen bittiği durum

TCP bağlantısı nasıl kurulur?

A bilgisayarı B bilgisayarına TCP yoluyla bağlanmak istediğinde şu yol izlenir:
A bilgisayarı B bilgisayarına TCP SYNchronize mesajı yollar
B bilgisayarı A bilgisayarının isteğini aldığına dair bir TCP SYN+ACKnowledgement mesajı yollar
A bilgisayarı B bilgisayarına TCP ACK mesajı yollar
B bilgisayarı bir ACK "TCP connection is ESTABLISHED" mesajı alır

Üç zamanlı el sıkışma adı verilen bu yöntem sonucunda TCP bağlantısı açılmış olur.

Veri iletimi

Bağlantı oluşturulduktan sonra, B bilgisayarı A bilgisayarından paketler almaya başlar. B, her aldığı paketten sonra bir süre bekledikten sonra en son düzgün olarak aldığı paket grubunu A'ya bildirir. Gelen bildirimlere göre A, daha sonra hangi paketleri yollaması gerektiğine karar verir ve yollar. Arada kaybolan paketler (veya paket alındı bilgileri) tekrar tekrar gönderir.

TCP bağlantısının sona erdirilmesi

Veri iletişimi bitince bilgisayarlardan herhangi biri diğerine TCP kapatma mesajı yollar. Diğer bilgisayar, kapatmayı teyid etme paketi ve kapatma isteği yollar. Son olarak, diğer bilgisayar da kapatma teyidini yollar ve bağlantı kapatılmış olur.

Bu işlemin adımları tam olarak şöyledir:

A bilgisayarı B bilgisayarına bağlantıyı sonlandırmak istediğine dair TCP FIN mesajı yollar.
B bilgisayarı A bilgisayarına bağlantı sonlandırma isteğini aldığına dair TCP ACK mesajı yollar.
B bilgisayarı A bilgisayarına bağlantıyı sonlandırmak istediğine dair TCP FIN mesajı yollar.
A bilgisayarı B bilgisayarına bağlantı sonlandırma isteğini aldığına dair TCP ACK mesajı yollar.

Bu işlemlerin sonunda TCP bağlantısı sonlandırılmış olur. Buna 4 zamanlı el sıkışma denir.[8]

Görüldüğü üzere, bağlantının kurulmasından farklı olarak bağlantı her cihaz için ayrıca kapatılmaktadır. Bunun nedeni, istenildiğinde bağlantının tek yönlü olarak açık tutulabilmesini sağlamaktır. Bunun için tek tarafın bağlantı kapama adımlarını gerçekleştirmesi gerekir.


TCP Segmenti

TCP bağlantı tabanlı (connection-oriented) bir protokoldür.  TCP bağlantı tabanlı bir protokol olduğu için iki bilgisayar, üçlü el şıkışma (3-way handshaking) yaptıktan sonra veri alışverişi yapmaya başlar.

TCP, taşıma katmanında verileri parçalara bölerek her bir parçanın önüne başlık bilgisi ekler. Başlık bilgisiyle birlikte bu veriye 'TCP Segmenti' denir.

TCP Segmentinin Yapısı


Bunun için https://tr.wikipedia.org/wiki/TCP  adresindeki tabloya bakmak gerekecek.


Kaynak Port (Source Port): Veriyi gönderen bilgisayarın kullandığı TCP portudur.

Hedef Port (Destination Port): Hedef bilgisayarın TCP portudur.

Sıra Numarası (Sequence Number): TCP'nin verinin böldüğü her bir segmentine verdiği numaradır.

Onay Numarası (ACK Number): Alınan bir SYN paketine karşılık olan onay mesajı ACK biti ile gönderilir.

Başlık Uzunluğu (Header Length/Data Offset): TCP başlığının uzunluğunu gösterir.

Rezerve Edilmiş (Reserved): İlerde kullanılmak üzere saklı tutulur.

Kod Bitleri ya da Bayraklar (Code Bits or Flags): Segment ile ilgili kontrol bilgilerini taşır.

Pencere (Window): Akış denetimi için kullanılır.

Hata Kontrol Bitleri (Checksum): Segmentin hatalı ulaşıp ulaşmadığını kontrol etmek için kullanılır.

Acil İşaretçisi (Urgent Pointer): Bir verinin acil olarak iletilmek istendiği durumlarda kullanılır.

Seçenek (Option): TCP segmentinin maksimum boyutunun bilgisini taşır.

Veri(Data):Verinin bulunduğu kısım.[12]

Başlık: Ynt: TCPIP vs konularında bir hoca çıksa da forum içi eğitim verse
Gönderen: z - 17 Eylül 2016, 14:34:22
Tamaammm. Hocamızı bulduk.

Hadi şu işe sen el at. 

Ders bitiminde kebap ta ısmarlarım.

Başlık: Ynt: TCPIP vs konularında bir hoca çıksa da forum içi eğitim verse
Gönderen: ByTEK - 17 Eylül 2016, 14:35:47
Kaynak olarak değerlendirebilir.

Network – En Çok Kullanılan Aktif Cihazlar
http://www.sercanca.com/network-en-cok-kullanilan-aktif-cihazlar/ (http://www.sercanca.com/network-en-cok-kullanilan-aktif-cihazlar/)

Daha çok Network te kullanılan aktif cihazların neler olduğuna değinmiştim.
Başlık: Ynt: TCPIP vs konularında bir hoca çıksa da forum içi eğitim verse
Gönderen: z - 17 Eylül 2016, 14:46:07
İlk sorumu sorayım.

TCP/IP protokolü için ille de ethernet şartmıdır? İşi anlayıncaya kadar karşılıklı iki cihazı USART üzerinden bağlayıp TCP/IP protokolüne göre haberleşemezmiyiz?

Bu konuların tamamen dışındayım ama içgüdülerim TCP/IP protokolünü yazabilmek için ethernet haberleşmesine ihtiyacımız olmadığını söylüyor. Sonuçta birisi protokol diğerisi donanım.

Seri portu olan 2 işlemci kartını ya da PC'yi kullanarak  sadece 2 cihazdan oluşan network kurabiliriz.

Bu durumda doğrudan veri alma rutinlerini yazıp hemen üstüne TCP/IP protokolünü inşaa edebiliriz. Daha sonra donanımla ilgili yazılımları ethernet yazılımları ile değiştiririz.

Bu benim işime gelir bu güne kadar hiç ethernet donanımı kullanmadım haliyle bu donanıma yazılım da yapmadım.

Başlık: Ynt: TCPIP vs konularında bir hoca çıksa da forum içi eğitim verse
Gönderen: ByTEK - 17 Eylül 2016, 14:52:14
@z bildiğim kadarıyla TCP IP ethernet yapısı üzerine kurulan bir protokol. COM ile verimli olacağına inanmıyorum. Hadi oldu diyelim. Hız bakımından yeterli geleceğini sanmıyorum. Günümüzde ethernet kartları min 100 mbps hızları var.

internette converter cihazların olduğunu gördüm. Ama sadece çevirici anladığım kadarıyla.

Eğer yapılabiliyorsa bilen birinden örnek yada kaynak bekliyorum.

mesaj birleştirme:: 18 Eylül 2016, 14:56:20


TCP detaylı anlatan kaynak.
https://tr.wikipedia.org/wiki/%C4%B0nternet_ileti%C5%9Fim_kurallar%C4%B1_dizisi
Başlık: Ynt: TCPIP vs konularında bir hoca çıksa da forum içi eğitim verse
Gönderen: tunayk - 17 Eylül 2016, 14:58:10
Ethernet kablomuz aslen Rs422 benzeri full duplex ve işlemci tarafından izole olması dışında bir özelliği yok.  Tcp IP stack yazılımsal tarafta.  İstenirse işlemcilerin Rx Tx pinleri birleştirip çalışır pekala.
Başlık: Ynt: TCPIP vs konularında bir hoca çıksa da forum içi eğitim verse
Gönderen: z - 17 Eylül 2016, 14:59:00
Bu aşamada iletişim hızını düşünmeye gerek yok. PRotokol yazılımını yaptıktan sonra ethernete geçebiliriz.

Çok mu yanlış düşünüyorum?  Sadece protokol kurallarını koda dökeceğiz. Sanki 1-2 günlük işi var gibime geliyor.

Seri portu forumda artık herkes avcunun içi gibi biliyor. Ethernet donanımının çoğunluğumuza yabancı olduğunu sanıyorum.

Bu nedenle seri portla işe başlamak çoğumuzu ürkütmez.

Ama dediğim gibi ben bu işlerden anlamam. Hissi yazıyorum.

Başlık: Ynt: TCPIP vs konularında bir hoca çıksa da forum içi eğitim verse
Gönderen: ByTEK - 17 Eylül 2016, 15:07:51
TCP/IP denildiğinde tüm protokolleri kapsayan ana protokoller bütünüdür.

Protokol bir iletişim sürecinde bu bağlantıyı sağlayan noktalar arasındaki gidip gelen mesajlaşmayı düzenleye kurallar dizisidir. Bu protokoller birbirleriyle iletişim içinde bulunan gerek donanım gerekse yazılımlar arasında oluşur. İletişimin gerçekleşmesi için her öğenin bu protokolü kabul etmiş ve uyguluyor olması gerekir.

TCP/IP 'de bu şekilde oluşan yüzden fazla bilgi iletişim protokolün toplandığı bir protkoller ailesidir. Bunlardan en önemlileri TCP (transmission control protokol) ve IP (ınternet protokol) olduğu için bu ismi almıştır.

TCP (Transmission Control Protocol)

UDP (User Datagram Protocol)

TCP :  TCP veri aktarımı için güvenlidir fakat UDP 'ye göre daha yavaştır. TCP 'de paketlerin karşı tarafa ulaşıp ulaşmadığı kontrol edilir.

TCP, gönderilen veriler için özel bir paketi gönderir. Bu paket, gelmiş olan paketlerden hangi byte'a kadar olan kısmının doğru olarak alındığını gösterir. Gönderen taraf, kabul gelmediği sürece paketi arka arkaya birkaç kez yollar (belli bir süre sonra da pes eder)

UDP : Daha çok ses ve video paketlerinin gönderiminde kullanılır. TCP 'ye göre hızlıdır fakat güvenli değildir. Örneğin internet üzerinden canlı yayın uygulamaları, video görüntüleri UDP ile aktarılır.

Burayıda gözden geçirin Hocam : http://www.emrahustun.com/gunluk/ag-iletisim-protokolleri-tcp-ip-ve-arm-islemci/321 (http://www.emrahustun.com/gunluk/ag-iletisim-protokolleri-tcp-ip-ve-arm-islemci/321)
Başlık: Ynt: TCPIP vs konularında bir hoca çıksa da forum içi eğitim verse
Gönderen: Yuunus - 17 Eylül 2016, 15:08:24
Z hocam olmaz, veri treninin uzunluğuna bakarsan dünya kadar flag adres data biti var kas yapayım derken göz çıkabilir en az 1500 bit veri katarının analiz edilmesi gerekir, hadi data kısmını es geçelim yine ortada hatrı sayılır bir veri blogu kalıyor. Bir ara uğraşayım dedim ama baktım amerikayi baştan keşfetmeye çalışıyorum bıraktım, bunun yerine protokol kutuphaneleri üzerine yoğunlassanız daha iyi olur nacizane önerim. Zaten bu kadar veriyi analiz edip cevap yollamak için bayağı iyi işlemcilere ihtiyaç var, ethernet rekabet acisindan. Zaten siz arastirmisinizdir.
Başlık: Ynt: TCPIP vs konularında bir hoca çıksa da forum içi eğitim verse
Gönderen: z - 17 Eylül 2016, 15:22:25
Digiman hemen havlu atma durumuna girme. Hele bir yazmayı dene. Pratik yap.

Bana bu linkte anlatılanları kodlamak hiç zor gelmedi.  https://tr.wikipedia.org/wiki/TCP

Şu anda işyerindeyim ve verdiğiniz linklerin çoğuna teknik blokajlardan dolayı bakamıyorum.

Bu arada ethernete rekabet falan yok nerden çıkarttın bunu.

Başlık: Ynt: TCPIP vs konularında bir hoca çıksa da forum içi eğitim verse
Gönderen: ByTEK - 17 Eylül 2016, 15:28:04
@z Teknik kısıtlamalara her zaman karşıydım. Eğer Firewall düzgün yapılandırılmadı ise sizi sorunsuz internete çıkartır. Eğer başarılı olursa loglamaya takılmazsınız.
Bu uygulamayı deneyin : https://psiphon3.com/tr/index.html
Başlık: Ynt: TCPIP vs konularında bir hoca çıksa da forum içi eğitim verse
Gönderen: z - 17 Eylül 2016, 15:31:55
Yok hocam. Çalıştığım yerdeki kısıtlamaları destekliyorum.  (Gerçi mokunu çıkartmışlar ama)

mesaj birleştirme:: 17 Eylül 2016, 15:46:26

Anladığım kadarıyla

Öncelikle iletişim rutinlerini tamamen ayrı bir proje dosyası olarak hazırlayacağız.  Bu proje gelen verileri bufferda biriktirecek.
Bizim buffera yazdığımız verileri de gönder dersek gönderecek.

Buffera veri geldi ise kaç byte geldi bundan bizi haberdar edecek ve bu aşamada gelen verilerde herhangi bir bozulma vs olmadığını kabul edeceğiz. (!!!)

Bizim yazacağımız program parçası Bufferdaki verileri okuyup https://tr.wikipedia.org/wiki/TCP deki  TCP Segmentinin Yapısı ışığında destination adrese bakacağız. Eğer bu adres biz isek
flaglara bakıp gerekli yanıtı vereceğiz. Ne zaman ne yanıt vereceğimiz ya da istekde bulunacaksak hangi flağı set edip adres alanına hangi adresi yerleştireceğimiz vs hep verdiğim linkte açıklanmış.

Olaya böyle bakarsak işin bu kısmı kolay görünüyor. Zaten bu yazılımlar üstü üste yazılacak galiba.

Windowsdaki Header barındıran veri blokları üzerinde yaptığımız işlerden çok farkı yok gibi görünüyor.

Haa derseniz ki bu iş asıl yapılmak işin yüzde kaçı? Hiç fikrim yok.
Başlık: Ynt: TCPIP vs konularında bir hoca çıksa da forum içi eğitim verse
Gönderen: Cemre. - 17 Eylül 2016, 18:19:19
Alıntı yapılan: gerbay - 17 Eylül 2016, 18:08:23
hocam tekrar soruyorum. uIP ya da lwip kullanmayı neden düşünmüyorsunuz?

@z hocam amacınız IoT e girmek ise yanlış yerden giriyorsunuz.. bu protokoller endüstri standardı olmuş protokoller ve bir çok gerçekleştirilmiş kütüphane mevcut. ücretli ya da açık kaynak kodlu pek çok kaliteli kütüphane var.

Eğer IoT a girecekseniz ve düzgün şeyler yapmak istiyorsanız RTOS a da girmelisiniz bence.. Hatta network stack işine giriyorsanız ve kullanacaksanız RTOS da kullanmanız işlerinizi kolaylaştıracaktır. Ne yapacaksınız bir tane de RTOS mu yazacaksınız.

benim size tavsiyem lwip kullanmanız. lwip yi BSD API ile kullanmanız. BSD API ile linux, windows, .... bir çok işletim sistemi desteği olduğundan çok kolay örnekler bulabilirsiniz. 

lwip, bsd api, rtos diyorum size çözüm olarak..


Hocam bsd api nedir?
Başlık: Ynt: TCPIP vs konularında bir hoca çıksa da forum içi eğitim verse
Gönderen: z - 17 Eylül 2016, 18:20:42
Hocam dedim ya bir hoca olmazsa böyle olur.

Kör tuttuğunu öpermiş. Ben buradan tuttum.

Gel işte şu şu şu yapılması lazım diye başla tut ucundan.

----------------

Peki bu dediğim kısmı yazdım diyelim. Bunun önüne ne yazmam gerekecek?
Başlık: Ynt: TCPIP vs konularında bir hoca çıksa da forum içi eğitim verse
Gönderen: hgs - 17 Eylül 2016, 19:40:58
ESP-01 kullanın. Uart üzerinden halledersiniz.
Başlık: Ynt: TCPIP vs konularında bir hoca çıksa da forum içi eğitim verse
Gönderen: Burak B - 17 Eylül 2016, 21:54:12
lwIP candır. :) IPv4, IPv6, PPP, mDNS, .... ve dahasını destekler. Her yola gelir. Desteklemediği ethernet paketlerini bile yönetebilme ihtimaliniz vardır. Bare metal veya RTOS ile çalışabilir. Multithread destekler, MPU varsa destekler. ESP' nin içinde ve daha pek çok yerde rastlayabileceğiniz bir stacktir. Bunlar sadece basit birkaç güzelliği; buzdağının görünen kısmı yani.
Başlık: Ynt: TCPIP vs konularında bir hoca çıksa da forum içi eğitim verse
Gönderen: DEno_12 - 21 Eylül 2016, 10:02:08
@z hocam noldu o iş?
Başlık: Ynt: TCPIP vs konularında bir hoca çıksa da forum içi eğitim verse
Gönderen: JKramer - 21 Eylül 2016, 10:11:18
https://www.picproje.org/index.php/topic,65601.0.html (https://www.picproje.org/index.php/topic,65601.0.html)
Başlık: Ynt: TCPIP vs konularında bir hoca çıksa da forum içi eğitim verse
Gönderen: DEno_12 - 21 Eylül 2016, 10:57:57
Alıntı yapılan: JKramer - 21 Eylül 2016, 10:11:18
https://www.picproje.org/index.php/topic,65601.0.html (https://www.picproje.org/index.php/topic,65601.0.html)

Yazdıktan sonra farkettim. Sağolun hocam, okuyorum.