네트워크 프로그래밍 CH4. TCP/UDP

Alpha, Orderly·2023년 3월 15일
0

TCP/IP 프로토콜 스택

  • 인터넷 기반 데이터 송수신 목적으로 설계
  • 각 스택별 영역 전문화 / 표준화
  • 7계층 혹은 4계층

OSI 7 Layer

  1. Physical Layer: 전기적 신호를 이용하여 데이터를 전송하는 단계입니다.
    케이블, 허브, 리피터 등의 장비를 사용합니다.

  2. Data Link Layer: Physical Layer에서 전송된 데이터를 프레임으로 분리하고, 각 프레임에 대한 에러 검사와 수정을 수행합니다.
    이 Layer에서는 스위치 등의 장비를 사용합니다.

  3. Network Layer: 데이터를 목적지까지 전달하는 경로를 결정하고, 패킷을 전송합니다.
    이 Layer에서는 라우터 등의 장비를 사용합니다.

  4. Transport Layer: 논리적인 연결을 설정하여 데이터를 전송합니다.
    이 Layer에서는 TCP, UDP 등의 프로토콜을 사용합니다.

  5. Session Layer: 통신 세션을 설정하고, 세션을 관리합니다.
    이 Layer에서는 포트 번호 등의 정보를 사용합니다.

  6. Presentation Layer: 데이터의 형식을 변환하거나, 데이터를 암호화하거나, 압축하는 등의 작업을 수행합니다.

  7. Application Layer: 사용자와 직접적으로 상호작용하는 어플리케이션을 지원합니다.
    HTTP, FTP, SMTP 등의 프로토콜이 이 Layer에서 사용됩니다.


TCP/UDP 계층

  • 실제 데이터의 송수신
  • Transport Layer
  • TCP
    • 신뢰성 보장
  • UDP
    • 신뢰성 보장 안함

TCP 서버

연결요청

  • 연결 요청도 일종의 데이터 전송, 하나의 소켓이 필요하다.

연결수락

  • 연결 요청을 참조해 클라이언트 소켓과의 통신을 위한 별도의 소켓 추가 생성

순서

서버

socket > bind > listen > accept > [read/write] > close

listen()

  • 연결 요청 대기 상태
  • 서버소켓 / 리스닝소켓

accept()

  • 클라이언트 요청 수락
  • 클라이언트 소켓과 통신을 위한 소켓을 하나 더 생성
  • 그 소켓으로 데이터의 송수신이 진행된다.

클라이언트

socket > connect > [read/write] > close

connect

  • 생성된 소켓을 서버와 연결한다.

Iterative 기반 서버-클라이언트

  • 반복적으로 accept 함수를 호출해 클라이언트의 연결 요청에 수락

서버

  • accept - read/write - close 반복

클라이언트

  • read/write 반복

에코 클라이언트 문제점

  • Write로 100개를 보내도 TCP가 100개를 한번에 보내지 않고, 여러개로 나누어 보내거나 이전것과 합쳐 보낼수 있다.
  • Read 함수 호출로 더 많이 / 적게 읽어올수 있다.
profile
만능 컴덕후 겸 번지 팬

0개의 댓글