Network/Unix Network Programming 9

[UNP] Transport Layer에 대한 이야기

모든 것은 결국 Datagram 단위로 쪼개져 보내진다. TCP가 Stream 방식이지만, 이건 sequence number를 이용해 순서를 정해주는 방식이다. DSCP : 네트워크 트래픽에 서로 다른 수준의 서비스를 할당할 수 있도록 하는 IP 패킷의 한 필드 MTU(Maximum Transmission Unit) - 네트워크 Layer에서 Segment 없이 보낼 수 있는 최대 데이터그램 크기. 즉, 한 번에 보낼 수 있는 크기. - 하드웨어에 따라 값이 다르다. - 우리가 주로 사용하는 이더넷의 MTU 값은 1500이다. - MSS(Maximum Segment Size)는 MTU에 영향을 조금 받는다. MTU = MSS + IP Header + TCP HeaderMTU가 1500이라면, MSS = ..

[UNP] SCTP Association Establishment and Termination

SCTP는 Connection-Oriented(연결 기반) 통신이다. 그래서 SCTP 또한 Association establishment와 Termination에 대한 Handshake를 한다. Four-Way handshake시나리오는 TCP와 비슷하다. SCTP association이 establish되면 알 수 있다. 1. Server는 들어오는 Association을 받을 준비를 해야 한다. 이 준비는 일반적으로 socket, bind, listen을 사용하는 것으로 이루어 지고, 이것이 Passive Open 과정이다. 2. Client에서 connect를 호출하거나, 암묵적으로 association을 open하는 message를 보내면서 Active Open을 하게 된다.Client SCTP가..

[Unix Network Programming] TIME_WAIT State

MSL(Maximum Segment Lifetime) 만약 TCP 자체를 구현해야 한다면, MSL 값을 반드시 세팅해 주어야 한다. RFC1122 : 2분. Berkeley-derived version : 30초. MSL은 IP Datagram이 Network에 존재할 수 있는 최대시간이다. original url : https://ko.wikipedia.org/wiki/Time_to_live TTL(Time To Live) & 홉 리미트(hop limit)인터넷 프로토콜에서 TTL은 8비트 크기의 필드이다. IPv4 헤더에서 TTL은 20 옥텟 중 8번째 옥텟이며, IPv6 헤더에서는 40 옥텟 중 8번째 옥텟이다. TTL의 최댓값은 단일 옥텟의 최댓값에 해당하는 255이다. 권장되는 초기값은 64이다..

[Unix Network Programming] Chapter 2.6 TCP Connection Establishment and Termination

1. 서버는 들어오는 새 연결을 Accept할 준비를 한다. (socket, bind, listen 호출)2. connect를 호출하여 open한다. Client는 SYN(synchronize segment : 서버에게 보낼 data의 sequence number)를 보낸다. 일반적으로 SYN과 함께 전송되는 데이터는 없다. 그저 IP Header / TCP Header / 여러가지 TCP 옵션들에 대한 정보가 포함된다.3. 서버는 클라이언트의 SYN에 응답하여 ACK를 보낸다. 또한, 보낼 데이터의 sequence number를 포함한 SYN을 보낸다. ' 이걸 하나의 segment에 담아 보낸다. 4. 마지막으로, 클라이언트는 서버의 SYN에 응답하여 ACK를 보낸다. TCP Options MSS 이..

[Unix Network Programming] Chapter 2.5 SCTP(Stream Control Transmission Protocol)

SCTP는 TCP/UDP와 흡사하다. 클라이언트와 서버 간의 "Association"들을 제공한다. TCP처럼 reliablity / sequencing / flow control, full-duplex 통신을 제공한다. "Association"은 SCTP에서 "connection" 대신에 사용하는 용어이다. connection은 오직 2개의 IP주소끼리의 연결을 의미하기 때문이다. SCTP는 Multi Homing으로 인해 2개 이상의 IP 주소가 사용될 수 있다. TCP와 다르게 SCTP는 Message Oriented 방식이다. 그리고 UDP처럼, 송신 측에 의해 작성된 records의 길이가 수신 측에 전달된다. SCTP는 연결 endpoint들 사이에 Multiple Stream을 사용할 수 있..

[UNP] 2.4 (TCP) Transmission Control Protocol

TCP - connection 기반으로 데이터를 교환한다. - Reliable - ACK가 오지 않으면 자동으로 데이터를 재전송하고, 기다린다. 보통 4~10분간(구현에 따라 다름) 몇 번의 데이터 재전송을 해도 응답이 없다면 포기한다. - 다른 endpoint로부터의 데이터를 receive할 거라는 보장을 하지 않는다. 그저 가능하다면 데이터를 전달하는 것이다. 데이터를 받을 수 없다면 그 정보를 알려 준다.- 그래서 TCP는 100% 신뢰성 있는 프로토콜을 보장하는 것이 아니다.- Round-Trip Time(RTT : ACK가 얼마나 오래 걸리는지에 대한 시간 => 패킷 주고받는 시간)을 추정하는 알고리즘을 사용한다. 만약 LAN을 통한 RTT는 밀리초 단위 시간이 걸린다면, WAN에서는 초 단위로..

[UNP] Chapter 2.3 (UDP) User Datagram Protocol

Encapsulated 라는 용어가 자주 나오는데, 그냥 캡슐화 라고 읽고.. 그것에 의해 묶여진다는 의미로 생각한다. UDP 소켓에 패킷을 적을 때, 패킷은 UDP 데이터그램에 의해 Encapsulated되고, IP 데이터그램에 의해 Encapsulated된다.. 고 써 있는 것을 보니, 레이어 별로 Encapsulated 되는 것을 말하는 것 같다. UDP - Described in RFC 768 - Connectionless - 에러를 발견하거나 패킷이 드랍되도 TCP처럼 자동으로 재전송되지 않는다. - UDP Datagram은 Length를 가진다. - TCP와 다르게 message boundary가 없다. - 같은 소켓으로 다양한 datagram 패킷 받을 수 있다.

[UNP] Chapter 2 The Big Picture - 용어 설명

BPF (BSD Packet Filter)DLPI (DataLink Provider Interface) 이들은 바로 IPv4와 IPv6를 거치지 않고 바로 Datalink layer로 통신한다. 예외로, Linux는 Datalink layer에 접근할 수 있도록 하는 SOCK_PACKET이라는 타입을 제공한다. IPv4 - 32bit address - Provide packet delivery service for TCP, UDP, SCTP, ICMP, IGMP IPv6 - 128bit address - Provide packet delivery service for TCP, UDP, SCTP, ICMPv6 TCP - Reliable Connection Oriented (신뢰성 있는 연결 기반) - Fu..

[UNP] Chapter 2 The Transport Layer: TCP, UDP, and SCTP 1 소개

Goal- How to use protocols- Understand details of the actual design, implementation, and the history Intro focus on the transport layer - TCP - UDP (UnReliable Datagram Socket) - SCTP (Stream Control Transmission Protocol) 이들은 3계층인 network layer의 IP, IPv4/IPv6을 사용한다. Raw socket IPv4 / IPv6를 사용하면서 transport layer를 우회하는 기술. 잘 사용되지 않는다. 이 책에선 ICMPv4 / ICMPv6을 토대로 IPv4 / IPv6에 대한 설명을 할 것이다. UDP - Si..

반응형