'Computer Science/네트워크 (Network)'에 해당되는 글 2건

  1. 2017.09.30 TCP vs UDP
  2. 2017.09.30 TCP 3 Way-Handshake & 4 Way-Handshake


TCP (Transmission Control Protocol)

  • 인터넷에서 많이 사용되는 socket 통신 방법
  • 보내야 하는 data를 네트워크가 허용하는 packet의 크기에 맞춰 자동으로 나눠서 보내는 것
  • 잘 보내졌는지 에러 없는지 체크하면서 packet을 잃어버리거나 잘못되지 않도록 검사함
  • 네트워크의 bandwidth에 부하가 생기지 않도록 자동으로 조절되면서 데이타가 보내지고, 주고 받는 데이타의 신뢰도를 보장
  • 전송 속도가 느림
  • 신뢰도 확보가 중요하거나 용량이 큰 데이타를 네트워크를 통해 전달해야 할 때, 실시간일 필요는 없을 때 활용하기 적합


  • UDP (User Datagram Protocol)

  • UDP는 data의 빠른 전송이 특징
  • packet이 잘 전달되었고 에러가 없는지를 매번 검사하지 않음
  • 오버헤드를 최소화한 매우 간단한 구조
  • 비연결형 (connectionless) IP 전달 서비스로 최소한의 신뢰성을 제공
  • 사용하는 경우
    • 단순한 요청-응답을 필요로 하는 프로세스
    • 내부적인 흐름 제어와 오류제어 메커니즘을 가지고 있는 프로세스
    • 멀티캐스팅과 브로드캐스팅을 위한 전송 프로토콜
    • SNMP(Simple Network Management Protocol)와 같은 관리 프로세스
    • 온라인게임이나 대량의 데이터를 신속하게 전달을 요하는 스트리밍 서비스 등



 

 TCP

 UDP 

 프로토콜 연결

 연결지향형 프로토콜

 Connection-oriented protocol


 전송 전에 연결을 해야 함

 비 연결지향형 프로토콜

 Connection-less protocol


 연결 수립 없이 데이터 송신

 애플리케이션 데이터

 입력 인터페이스

 바이트 스트림

 connection by byte stream


 특정한 구조 없이 데이터 송신

 메시지 스트림

 connection by message stream


 데이터를 별도의 패키지로 송신

 흐름제어

 혼잡제어, 흐름제어

 Congestion control, flow control

 혼잡제어, 흐름제어 지원하지 않음

 no congestoin control, flow control

 순서

 순서 보장

 ordered, lower speed

 순서 보장하지 않음
 not ordered, higher speed

 신뢰성, 승인

 메시지 전송을 신뢰함

 모든 데이터에 대한 승인

 신뢰성 없음

 승인 없는 최선 노력 전송 방식

 재전송

 모든 데이터 전송 관리

 손실 데이터 자동 재전송

 재전송 하지 않음

 애플리케이션은 손실 데이터를 탐지하고

 필요할 경우 재전송함

 부하

 낮지만 UDP 보다 높음

 매우 낮음

 전송 속도

 빠르지만 UDP 보다 느림

 매우 빠름

 적합 데이터 양

 소형에서 초대형

 소형에서 중형 (최대 수백 Byte)

 애플리케이션의 유형

 신뢰할 수 있는 방법으로 데이터를 송신

 완전성보다 전달 속도가 중요

 소량의 데이터를 송신

 멀티캐스트/브로트캐스트를 사용

 유명 애플리케이션,프로토콜

 FTP, Telnet, SMTP, DNS, HTTP, POP, IMAP

 DNS, BOOTP, DHCP, TFTP, SNMP, RIP

 패킷

 세그먼트 (Segment)

 데이터그램 (Datagram)







'Computer Science > 네트워크 (Network)' 카테고리의 다른 글

TCP vs UDP  (0) 2017.09.30
TCP 3 Way-Handshake & 4 Way-Handshake  (0) 2017.09.30

Leave a Comment


TCP 3-way hand shaking

TCP/IP프로토콜 통신을 하는 응용프로그램이 데이터를 전송하기 전에 정확한 전송을 보장하기 위해 상대방과 세션을 수립하는 과정

  1. Client > Server : TCP SYN         Server : LISTEN, Client : SYN_SENT
  2. Server > Client : TCP SYN+ACK Server : SYN_RECEIVED
  3. Client > Server : TCP ACK         Server, Client : ESTABLISHED


     SYN : 'synchronize sequence numbers'

     ACK : 'acknowledgment'


출처 : [1] https://notes.shichao.io/unp/ch2/


TCP 4-way Handshaking

세션을 종류하기 위해 수행되는 절차 (FIN, ACK, FIN, ACK 주고받음)

  1. 클라이언트가 연결을 종료하겠다는 FIN플래그를 전송
  2. 서버는 확인메시지를 보내고 자신의 통신이 끝날때까지 대기 (TIME_WAIT)
  3. 서버가 통신이 끝났으면 연결이 종료되었다고 클라이언트에게 FIN 전송
  4. 클라이언트는 확인했다는 메시지 전송


출처 : [1] https://notes.shichao.io/unp/ch2/



TCP State

  • CLOSED 

    • 연결되지 않은 상태

    • 소켓의 초기 시작 상태

    • 연결이 종료됨 (연결 없음)


  • SYN-SENT

    • SYN 세그먼트를 보내고, ACK를 기다리는 상태


  • LISTEN
    • SYN 세그먼트를 기다리며, 대기중인 상태
    • 서버가 SYN 세그먼트를 수신하면, SYN+ACK 세그먼트를 송신하고는 이후, SYN-RECEIVED 상태로 전이됨


  • SYN-RECEIVED

    • SYN 세그먼트(연결 요청)을 받고, 자신의 SYN(즉, SYN+ACK 세그먼트)으로 응답한 상태 

    • 이때부터, 상대방에서 ACK 세그먼트를 기다리는 상태

    • 상대방의 ACK 세그먼트가 수신되면 ESTABLISHED 상태로 전이됨


  • ESTABLISHED

    • 연결 성립 상태

    • 두 종단 간에 양방향 데이터 전송이 가능

    • 종단 각각 자신 및 상대 ISN(초기순서번호)를 알게 됨

    • 양단 간에 TCP 옵션에 의해 부가적인 정보가 전달됨


  • CLOSE-WAIT

    • TCP가 어플리케이션 종료를 기다림

    • 이 상태에서 계속 데이터를 상대에게 보낼 수 있음


  • LAST-ACK

    • 서버는 자신이 송신한 FIN 세그먼트에 대한 ACK 세그먼트를 기다림


  • FIN-WAIT-1

    • 자신이 보낸 FIN 세그먼트에 대한 ACK를 기다리고, 또한 상대측 FIN을 기다림

    • 자신은 더이상 데이터를 보낼 수 없지만, 상대측으로부터 오는 데이터는 계속 가능 상태


  • FIN-WAIT-2

    • FIN 세그먼트를 송신하고, 상대측은 이에 대한 ACK를 송신


  • Closing

    • 상대로부터 FIN 세그먼트를 받고 ACK를 보냈지만, 자신의 FIN 세그먼트에 대한 ACK는 받지못함


  • TIME-WAIT

    • 최대 세그먼트 수명(MSL,Maximum Segment Lifetime)의 2배를 기다림

    • 지정된 시간이 지나면, Closed 상태로 전이됨

    • Client는 Server로부터 FIN을 수신하더라도 일정시간(디폴트 240초) 동안 세션을 남겨놓고 잉여 패킷을 기다리는 과정






Reference

[1] https://notes.shichao.io/unp/ch2/

'Computer Science > 네트워크 (Network)' 카테고리의 다른 글

TCP vs UDP  (0) 2017.09.30
TCP 3 Way-Handshake & 4 Way-Handshake  (0) 2017.09.30

Leave a Comment


to Top