ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TCP / UDP, 소켓
    CS 지식/네트워크 2020. 8. 23. 20:45
    반응형
    • TCP(전송제어 프로토콜)

      • IP의 핵심 프로토콜 중 하나로 TCP/IP라는 명칭으로 널리 불린다.
      • 근거리 통신망이나 인트라넷, 인터넷에 연결된 컴퓨터에서 실행되는 프로그램 간의 일련의 옥텟을 안정적으로, 순서대로, 에러없이 교환하도록 한다.
      • 전송 계층에 위치 ~> 네트워크 정보 전달 통제
      • 웹 브라우저들이 월드와이드웹(WWW)에서 서버에 연결할 때 사용, 이메일 전송 or 파일 전송에 사용됨
      • 프로토콜 작동
        • 연결 생성
          • 연결을 생성하기 위해 3방향 핸드셰이크를 이용
        • 자료 전송
          • SYN => 클라이언트가 서버에게 SYN 메세지를 전송 ~> 이 메세지에 포함된 시퀀스 번호는 클라이언트가 임의로 설정한 값 A
          • SYN-ACK => 서버가 클라이언트에게 SYN-ACK 메세지로 응답 ~> 이 메세지에 포함된 시퀀스 번호는 서버가 임의로 설정한 값 B, 응답 번호는 (A+1)
          • ACK => 클라이언트가 서버에게 ACK 메세지를 보냄 ~> 이 메세지에 포함된 응답 번호는 (B+1)
        • 연결 종료
          • 연결을 종료하기 위해 4방향 핸드셰이크를 사용
    • TCP VS UDP

      • TCP
        • 연결형 서비스를 지원하는 전송 계층 프로토콜, 인터넷 환경에서 기본으로 사용
        • 호스트간 신뢰성 있는 데이터 전달과 흐름 제어
        • 인터넷 상에서 데이터를 메시지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜
        • IP가 데이터의 배달을 처리한다고 치면 TCP는 패킷을 추적 관리함.
        • 특징
          • 연결형 서비스 ~> 가상 회선 방식 제공
          • 데이터 경계 구분 X
          • 데이터 전송 순서 보장
          • UDP보다 전송 속도가 느림
          • 신뢰성 있는 데이터 전송
      • UDP
        • 비연결형 서비스를 지원하는 전송 계층 프로토콜, 인터넷 상에서 서로 정보를 주고 받을 때 정보를 보내거나 받는 신호 절차를 거치지 않음
          • 보내는 쪽에서 일방적으로 데이터 전달
        • 데이터그램(독립적 관계를 지니는 패킷) 단위로 데이터를 처리
        • 특징
          • 비연결형 서비스 ~> 데이터그램 방식 제공
          • 정보를 주고 받는다는 신호절차 X
          • 신뢰성 없는 데이터도 전송
          • 데이터 경계를 구분
          • TCP보다 전송 속도가 빠름
          • 신뢰성 < 연속성 => streaming 서비스에 자주 이용됨
    • TCP/IP 소켓 프로그래밍
      • 서버 / 클라이언트 구조
        • 서버가 먼저 실행되어 클라이언트의 접속을 기다림 (listen)
        • 클라이언트가 서버에 접속(connect)해서 데이터를 보냄(send)
        • 서버는 클라이언트의 접속을 허락(accept) ~> 클라이언트가 보낸 데이터를 받아서 처리 (receive)
        • 서버는 처리한 데이터를 클라이언트에 보냄 (send)
        • 클라이언트는 서버가 보낸 데이터를 받아서 (receive) 목적에 따라 사용
      • 동작 원리
        • 서버는 소켓을 생성한 후 클라이언트의 접속을 기다림.
          • 이때 서버가 사용하는 소켓은 특정 보트 번호와 결합(bind)된 상태 ~> 이 포트로 접속하는 클라이언트만 수용
        • 클라이언트 접속 ~> TCP Protocol 수준에서 연결 설정을 위한 패킷 교환 발생
        • TCP 프로토콜 수준의 연결이 끝나면, 서버는 접속한 클라이언트와 통신할 수 있는 새로운 소켓을 생성 ~> Server 와 Client가 데이터를 주고 받을 때 이 소켓을 사용
        • 기존의 소켓은 새로운 클라이언트 접속을 수용하는 용도로 계속 사용 (reuse)
        • 만약 두 클라이언트가 접속상태 ~> 서버측에서는 총 3개의 소켓 존재 ~> 2개는 통신용
          • 한 클라이언트가 두개 이상의 소캣 사용도 가능
    • 소켓

      • 1982년 BSD UNIX 4.1에서 처음 소개됐고, 현재 사용되는 의미는 1986년 BSD UNIX 4.3 개정 개념
      • 소프트웨어로 작성된 추상적 개념의 통신 접속점
      • 네트워크 응용프로그램은 소켓을 통해 통신망으로 데이터 송수신
      • TCP/IP를 이용하는 창구 역할이자 응용 프로그램과 소켓 사이의 인터페이스 역할
      • 소켓을 통해 서로 다른 프로세스끼리 데이터를 전달할 수 있음
      • 서버 소켓
        • 서버 프로그램에서만 사용하는 소켓
        • 연결 요청이 오기를 기다렸다가 요청이 들어오면 연결을 맺고, 다른 소켓을 만든다.
      • 클라이언트 소켓
        • 바로 클라이언트 소켓 생성 ~> 서버로 연결 요청 및 데이터 전송
    • 3 - way & 4 - way handshake 쉽게 정리
      • 3 -way
        • 연결 요청 보냄 (client -> server)
        • 연결 요청 완료 됐다는 메세지 보냄 (server -> client)
        • 연결 요청 완료를 확인했다는 메세지를 보냄 (client -> server)
      • 4 -way
        • 연결 해제 FIN 플래그 전송 (client -> server)
        • 확인 메세지를 보내고 통신이 끝날 때 까지 대기 (server -> client)
        • 통신이 종료되었다고 FIN 플래그 전송 (server -> client)
        • 연결 해제를 확인했다고 메세지 보냄 (client -> server)
    반응형

    'CS 지식 > 네트워크' 카테고리의 다른 글

    URI, URL  (0) 2020.08.23
    DNS (Domain Name Server)  (0) 2020.08.23
    서브넷(서브 네트워크), IPv4, IPv6  (0) 2020.08.23

    댓글

Designed by Tistory.