ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • IP와 포트, TCP/UDP
    네트워크 2024. 3. 25. 15:54

    IP

    보통 32비트를 써서 표현하는 호스트의 주소를 의미

    그러나, 호스트의 IP만 가지고는 어떤 프로세스를 찾아가야 하는지 모름

     

    포트

    식별자는 IP 주소와 포트 넘버를 포함

    프로세스의 주소라고 생각하면 됩니다.

     

    예) HTTP 포트 80 (8000, 8080) 메일 포트 25


    애플리케이션 레이어의 프로토콜이 정의해야 하는 것

    교환되는 메시지의 타입

    - 리퀘스트

    - 리스폰스

     

    메시지 신택스

    - 문법, 구조, 규칙

     

    메시지 세만틱스

    - 의미

     

    예) a = b

    수학과 컴퓨터에서 신택스는 같으나 세만틱스는 다름

     

    - 언제 어떻게 프로세스가 메시지를 보내고 받을 것인가

     

    메시지 신택스 + 메시지 세만틱스 (+ 룰) = 프로토콜

     

    오픈 프로토콜

    - RFCs에서 정의됨

    - 상호운용성 허용

    - 예) HTTP, SMTP

     

    사적인(proprietary) 프로토콜

    - 비공개

    - 예) 스카이프


    애플리케이션이 필요로 하는 전송 중 서비스

    1. Data Integrity (신뢰성)

    2. Throughput (전송률)

    3. Timing (시간)

    4. Security (보안, 암호화)

     

    Application Data Loss Throughput Time Sensitive
    파일 전송 안됨 엘라스틱 상관없음
    이메일 안됨 엘라스틱 상관없음
    웹 문서 안됨 엘라스틱 상관없음
    리얼타임 오디오, 비디오 어느정도 허용(감내) 정해진 수준을 만족해야 함 빨리 돼야 함
    저장된 오디오, 비디오 어느정도 허용(감내) 정해진 수준을 만족해야 함 빨리 돼야 함
    상호작용형 게임 어느정도 허용(감내) 정해진 수준을 만족해야 함 빨리 돼야 함
    텍스트 메시지 안됨 엘라스틱 상관없음

    * 엘라스틱(Elastic) : 유연하게 처리해도 된다는 뜻

     

    문자적 데이터는 시간을 포기하고 데이터 로스가 없게,

    화상적 데이터는 데이터를 포기하고 시간이 빠르게 처리되는 형태입니다.


    TCP

    - 신뢰성있는 전송 (받았는지 안받았는지 체크)

    - 흐름 제어 (받는 쪽에서 밀리면 천천히 보내주기)

    - 혼잡 제어 (네트워크 상에서 발생하는 혼잡을 제어)

    - 제공 안하는 거: 타이밍, 스루풋 최소화, 보안.. 이것들은 다른 레이어에서 할 일

    - 커넥션-오리엔티드 (클라이언트 서버 프로세스 간 커넥션, 사전 약속이 있어야 함)

     

    UDP

    - 신뢰 없음

    - 신뢰성, 흐름 제어, 혼잡 제어, 타이밍, 스루풋, 신뢰성, 커넥션 셋업 등 싹 제공 안함

    - 왜 쓰냐? 이게 더 빠르고(각종 처리가 없음) 혼잡이 덜 일어나니까(회답 안받으니까)

     

    어플리케이션 어플리케이션 레이어 프로토콜 그 밑 트랜스포트 레이어 프로토콜
    이메일 SMTP TCP
    원격 터미널 접속 Telnet TCP
    HTTP TCP
    파일 전송 FTP TCP
    멀티미디어 스트리밍 HTTP, RTP TCP, UDP
    인터넷 전화 SIP, RTP, proprietary TCP, UDP

     

    옛날엔 유튜브도 UDP 썼는데 요즘엔 워낙 환경이 좋으니 TCP로 바꿔가는 추세

    일단 UDP가 TCP보다 빠르니까 가능한 빠른 데이터 전송이 필요한 환경에서 UDP,

    그렇지 않으면 TCP를 씁니다.


    시큐어링 TCP

    기본적으로 TCP와 UDP는 암호화를 안합니다.

    어플리케이션 계층에서 보안을 강조하기 위해 SSL (Secure Socket Layer) 라이브러리를 사용하는데,

    이 라이브러리가 TCP와 소통합니다. 중간에 계층을 하나 끼워넣었다고 볼 수 있습니다.

     

    TLS(Transport Layer Security)는 트랜스포트 계층에서 암호화를 합니다. 좀 더 상위 버전이라 보면 됩니다.

Designed by Tistory.