Yanıtlar:
Diyelim TCP segment
ki, bir TCP üstbilgisi ve (üst) Uygulama Katmanından gelen bir uygulama veri parçasından (paket) oluşan protokol veri birimi. Aktarım katmanı verileri genellikle olarak adlandırılır segment
ve ağ katmanı veri birimi olarak adlandırılır, datagram
ancak UDP'yi aktarım katmanı protokolü olarak kullandığımızda UDP segment
bunun yerine demiyoruz UDP datagram
. Bunun nedeni, UDP veri birimini bölümlere ayırmamamızdır (bölümleme, TCP kullandığımızda taşıma katmanında yapılır).
Orijinal TCP RFC, "segment" terimini kullanma biçiminde belirsizdir.
Bazı durumlarda, "segment" terimi, iletilen uygulama veri akışının TCP başlıklarını hariç tutan geçerli parçasını ifade eder. Örneğin, TCP "Maksimum Segment Boyutu" (MSS), TCP üstbilgilerini saymamak yerine, bu iletideki uygulama veri yığınının maksimum boyutudur.
Ancak diğer durumlarda "segment" terimi, TCP başlıkları da dahil olmak üzere tüm TCP mesajını içerir. Aslında en az bir durumda, spesifikasyon uygulama verisi olmayan TCP segmentlerinden (düz Acks gibi) bahsedilir.
Tek bir tam IP mesajı bir "datagram" dır.
Orijinal IP RFC, bağlantı katmanı iletilerini "paketler" olarak belirtir. IP datagramları, küçük paket ağlarda paket boyutu sınırlarına uyması için "parçalara" ayrılabilir.
IEEE 802.3 / Ethernet bağlantı katmanı, tek bir bitişik fiziksel katman iletimini "paket" olarak ifade eder. Paketin MAC veri bağlantısı kısmına "çerçeve" denir. Çerçeve hedef MAC adresiyle başlar ve Çerçeve Kontrol Sırası ile biter. Çerçevenin bir IP datagramı (veya bunun bir parçasını) içerebilecek kısmına "MAC İstemci Verileri alanı" denir.
Dolayısıyla teknik olarak "TCP paketi" veya "IP paketi" diye bir şey yoktur. Paketler IP'nin altındaki katmanlardan gelen terimlerdir. TCP'nin "segmentleri" ve IP'nin "datagramları" vardır.
"Segment başlığı" olarak da adlandırılan TCP üstbilgisi ve yük veya veri veya "segment verileri", TCP segmentini değişen boyutta oluşturur.
TCP Segmentine Datagram adı verilir. Tipik olarak, bir Segment veya bir datagram bir Pakettir. Datagram veya paket Ağ katmanı tarafından işlendiğinde, veriye IP Üstbilgisi ekler ve bir IP Paketi haline gelir.
Taşıma katmanı, verileri Segmentler, datagramlar veya paketler adı verilen daha küçük birimlere böler. Ancak genellikle bunları Segmentler olarak adlandırırız.
tcp segmenti sadece bir konsept, ip birleştirme ile farklı
ip mtu'dan daha büyük veri gönderdiğinizde, bir ip paketine konur, ancak ip katmanı ip paketini iletmek için çok uzun bulur, böylece büyük paketi birkaç parçaya böler, her biri aynı Tanımlayıcı ancak farklı ofset ve veri uzunluğuna sahip. alıcı tarafı tüm parçaları toplamaktan sorumludur, tüm parçaları aldıktan sonra tüm parçaları tek bir ip paketine yeniden monte eder ve üst protokol katmanına iter.
ancak tcp katmanının farklı davranışları vardır. yeterince büyük bir veri gönderdiğinizde, tcp katmanı verileri bir tcp paketine koymaz, sonra bunları parçalara ayırmaz (ancak ip yapar), ham verilerin bir kısmını tek bir tcp paketine alır ve tcp paketinden ip katmanına, tcp paketinin uzunluğu mss tarafından belirlenir, daha sonra geri kalan verilerin başka bir bölümünü başka bir tcp paketine alır ve tüm veriler iletilene kadar işlemi tekrarlar.
Eğer tcp mss kullanmıyorsa, korkunçtur. mss'den daha büyük bir veri gönderdiğinizi varsayalım, sadece bir tcp paketine konulur (veriler mss kullanılmadığı için küçük parçalara ayrılmaz t, tcp paketi ip mtu'dan daha büyüktür, bu nedenle ip tcp'yi böler paket parçalara. Parçalardan herhangi biri kaybolursa, zaman kaybı ve bant genişliği ile tcp paketi yeniden iletilir
ps: tcp_mss = ip_mtu - tcp_header
Bir başlık segmentlerden oluşmuyor. Bir başlık her zaman aynı boyuta sahiptir ve tam olmalıdır. Aksi takdirde, paketin kodu çözülemedi.
"Segment" olarak adlandırdığınız şey, daha sonra TCP akışında başkalarıyla birleştirilen tüm "paket" tir. Görmek:
İletim Denetimi Protokolü, bir veri akışındaki verileri kabul eder, verileri parçalara ayırır ve bir TCP segmenti oluşturan bir TCP üstbilgisi ekler.
TCP, uygulama katmanından veri alır ve bu verileri çeşitli veri segmentlerine "keser"; TCP başlığına sahip orijinal verilerin parçaları. Bu başlığın bir kısmı, alınan tüm segmentleri (başlıklar eksi) doğru sıraya koymak ve daha sonra uygulama katmanına aktardığı orijinal verileri yeniden birleştirmek için alıcı ucundaki TCP protokolü tarafından kullanılan bir sıra numarasıdır. .
Yani, sorunuzu cevaplamak için; 'TCP paketi' terimi gerçekten mevcut değildir. Buna başlık ve veri bölümünden oluşan 'segment' denir. Başlığın kendisi, diğerlerinin yanı sıra bir sıra numarası, sağlama toplamı ve kaynak ve hedef bağlantı noktası numaraları içeren birkaç 'alandan' oluşur.
TCP bağlantısı düşünerek veri gönderdiğinizde, gönderdiğiniz veri miktarı tek bir pakette bağlantı tarafından izin verilen maksimum bayt boyutunu aşabilir. Bu miktar "Maksimum Segment Boyutu" (MSS olarak da bilinir), iki TCP uç noktası (istemci ve sunucu) arasındaki bağlantı zamanında "anlaşılır" (1). OSI düzey 4 protokolü TCP dağılım / toplama işleminden sorumludur. Bu, veri akışınızın daha küçük parçalara (segmentler olarak adlandırılır) ayrıldığı ve ağ üzerinden ayrı olarak gönderildiği anlamına gelir. Diğer tarafta, TCP katmanı, akışı gönderildiği gibi yeniden biçimlendirmek için paketi doğru sırada yeniden toplamaktan sorumludur. Hiçbir şey, segmentlerin hedefe gidiş ile aynı sırada ulaşacağını söyleyemez. Bu yüzden paketler de numaralandırılmıştır. Daha, paketler alıcı tarafından ayrı ayrı (2) onaylanır, ancak bazen paketler kaybolabilir. Daha sonra paketin hedefinden vericiye hiçbir ACK döndürülmez. Daha sonra verici yeniden göndermelidir (bu da TCP'nin rolüdür). Bazen paket doğru şekilde alınır, ancak ack yayıcı tarafından alınmaz (tekrar paket kaybedilir). Böyle bir durumda, verici onu yeniden gönderir, ancak alıcı zaten aldığını (bir Dup paketi) görür ve ortadan kaldırır, ancak göndericiye ack'i yeniden gönderir.
Ayrıca verimi artırmak için verici seri olarak birkaç paket gönderebilir ve bir önceki paketin bir sonraki paketi göndermesini beklemek zorunda kalmaz. Aynı zamanda TCP protokolünün bir parçasıdır ve sürgülü pencereler olarak adlandırılır. Bir ack için bekleyen gönderilen paket sayısı sınırlıdır.
(1) Gerçekte, hiçbir müzakere yoktur, her bir son nokta, başa çıkabileceği Maksimum Boyutu söyler. Bu değer, 20 baytlık IP Üstbilgisini, 20 baytlık TCP Başlığını içermez. (2) birkaç paket tek bir ACK tarafından da onaylanabilir.
Datagramların bir IP ağında veya UDP gibi bağlantısız bir protokol kullanılarak gönderilen kapsüllenmiş veriler olduğunu unutmayın. Paketler TCP gibi bağlantıya yönelik bir protokol için kapsüllenmiş verilerdir. Segmentler, TCP'ye gönderilen bir veri akışının bölümleridir. Tüm bunların çok daha iyi bir açıklaması için W.Richard Stevens "TCP / IP resimli" bölümüne bakınız .
Bunun gibi şeyler için "genel" terim Protokol Veri Birimi veya PDU'dur.
LAYER # - OSI NAME - COMMON PROTOCOL OR USE - PDU NAME
------- ------------ ---------------------- --------------------------
Layer 1 - Physical - Transceiver - bits, or a physical signal
Layer 2 - Datalink - Ethernet - frame
Layer 3 - Network - IP - packet
Layer 4 - Transport - TCP - segment
Layer 5 - Session - SIP - data, request, or response
Layer 6 - Presentation - Encryption/compression - data, request, or response
Layer 7 - Application - HTTP - data, request, or response
Şeyler katman 4 ve yukarı belirli protokoller ile bulanık olsun (örneğin, bugüne kadar tamamen bir oturum protokolü olan hiçbir şey bilmiyorum ve gerçekten ortak bir "sunum" protokolü gibi bir şey yok ancak bir çok yazılım / iletişim yığınında neredeyse ayrı bir katman).
Ayrıca, daha önce de belirtildiği gibi, bu PDU'ların her birinin, yükünden veya verilerinden farklı bir başlığı vardır . Başlık, veriler hakkında bilgi içerir ve muhtemelen diğer tarafta doğrulama için bir sağlama toplamı içerir.