기초 물방울/네트워크

TCP, UDP, 3Way-HandShake (수업) #6

Weeding 2022. 7. 1. 11:47
반응형
SMALL

 

 

TCP/IP 프로토콜의 전송계층은 End-to-End

 

데이터 링크 계층

  • 네트워크에서 시스템과 시스템을 연결한 구간인 "링크에서의 데이터 전송방법" 을 정의

 

전송 계층

  • 네트워크 "양 끝 단의 송신 호스트와 수신 호스트 간의 효율적인 데이터 전송 방법"을 규정
  • 네트워크 계층에서 IP 주소를 가지고 경로 설정을 하여 송신 호스트와 수신 호스트를 연결
    -> 양 끝단 호스트 간의 연결 설정 방법을 규정

 

 

전송 계층 기능

흐름 제어

  • 송신 호스트와 수신 호스트 간의 데이터를 주고 받는 "전송 속도 차이"를 제어해주는 기능
  • ex) "슬라이딩 윈도우"로 송신 호스트가 보낼 수 있는 패킷 수를 제어

 

오류 제어

  • 데이터의 분실, 오류 시 재전송을 통한 오류 제어
  • ex) Selective ARQ, Stop and Wait ARQ, Go back N ARQ

 

분할과 병합

  • 분할 -> 송신 측에서 데이터를 하위 계층인 네트워크 계층의 IP 패킷에 담기 "적합한 크기로 나누는" 과정
  • 병합 -> 수신 측에서 수신한 패킷에서 제어 정보를 떼고 전송 계층에 올려준 "데이터를 결합"시키는 과정

 

서비스 프리미티브

  • 전송 계층 사용자가 전송 계층 서비스를 사용하기 위한 인터페이스
  • ex) 연결형 서비스와 비연결형 서비스

 

주소 표현

  • 전송 계층 주소 : TSAP(Transport Service Access Point)
  • 호스트 IP 주소와 전송 포트 번호의 조합
  • "포트 번호는 통신 프로세스를 구별하는 번호"로 다수의 포트 번호가 존재하고, 상위 응용 서비스를 구분함.
  • 잘 알려진 포트 : 1~1023 // 임의 포트 : 1024~65535
  • 소켓 : IP 주소 + 포트 번호

네이버 : 포트 80

 

캡슐화

  • 송신 프로세스에서 제어 정보를 추가

 

역캡슐화

  • 수신 프로세스에서 제어정보를 제거

캡슐화와 역캡슐화

 

 

연결 지향 서비스

  • 호의 설정 -> 데이터 전송 -> 호의 해제
  • 오류 제어, 흐름제어를 하여 신뢰성이 있음
  • 많은 양의 데이터를 전송시에 사용
  • TCP 프로토콜에 해당

 

비 연결 지향 서비스

  • 호 설정 없이 브로드캐스트 방식으로 데이터 전송
  • 오류 제어, 흐름 제어를 하지 않아서 신뢰성이 없음
  • 적은 양의 데이터(망 관리 데이터 등)를 전송 시 사용
  • "실시간" 서비스 제공
  • UDP

 

 

 

소켓

  • IP + 전송 계층 포트 번호

https

 


 

TCP 프로토콜

  • 전송계층의 대표적인 프로토콜
  • 연결형 서비스
  • 오류제어+흐름제어 = 신뢰성
  • 많은 양의 스트림 데이터 전송
  • 혼잡 제어를 통한 트래픽 폭주상태 제어
  • "세그먼트"라는 데이터 단위로 전송
  • RFC 793에서 정의

 

TCP 포트 번호

  • 포트 길이 : 16비트 (0~65535)
  • 잘 알려진 포트 : 1~1023
  • ex) 21(FTP), 23(TELNET), 25(SMTP), 80(HTTP)

 

 

TCP 소켓

http:// ... .... .... .... 

80(포트번호) + IP주소 = 소켓

IP + 포트 = TCP 소켓

 

 

 

TCP 연결 설정 절차 (3-Way Handshake)

  • 클라이언트가 서버로 SYN 신호를 전송하여 연결 설정 요청
  • 서버가 클라이언트로 ACK 신호로 응답 전송과 함께 서버에서 클라이언트로부터 SYN 신호의 연결 설정 요청
  • 클라이언트가 서버로 ACK 신호를 전송하여 응답.
  • 피기백(Piggyback) 기능 사용 (-->> 요청과 응답이 한 패킷에 들어가있는것)

3-way handshake

 

 

TCP 연결 해제 절차 (4-Way Handshake)

4-way handshake

 

 

 

 

 

TCP Persist 타이머

  • 수신 측의 Window Size 증가 여부를 확인하기 위해 일정 간격으로 송신 측에서 구동하는 타이머
  • Window Size가 0인 패킷을 수신할 때 동작

 

 

TCP 재전송 타이머

  • 재전송 타이머 값은 왕복시간(RTT, Round-Trip Time) 보다 약간 크면 됨
    왕복시간 : 클라이언트에서 출발한 세그먼트가 서버에 도착하여 승인을 클라이언트에게 되돌려 보내는 데 드는 시간

  • 일반적인 RTT가 존재하지 않는 이유
  • - 연결거리의 차이와 일시적인 지연시간과 변동성 때문
  • - RTT 계산에 기반한 적응형 재전송 평균적인 지연시간을 계산

 

 

Silly Window Syndrome 현상

  • 일정크기 이하의 적은 양의 TCP 세그먼트 데이터가 Connection을 통해 교환되는 현상
  • 해결책
    -> 수신 측은 작은 세그먼트를 통보X, Window가 one-full-sized 세그먼트로 증가할 때 통보

 


 

 

UDP 프로토콜

  • 비연결형 (호 설정 절차 없이 브로드캐시트 방식)
  • 비신뢰성 (오류제어, 흐름제어, 혼잡제어를 하지 않음)
  • 적은 데이터의 다지점 전송 (상대적으로 적은 데이터 전송)
  • 실시간 전송

6 -> TCP / 17 -> UDP

 

 

데이터그램 전송

  • 비연결형
  • 분실 가능성
  • 도착 순서 변경

수신자가 재정립

 

 

다중화

  • 송신 측에서는 사용자 데이터그램을 보내고자하는 여러 개의 프로세스 존재
  • 송신 UDP는 하나만 있으므로 다중화가 필요
  • UDP는 프로세스 포트 번호에 의하여 구분되는 서로 다른 메시지를 수신 --> 다중화
  • 다중화된 데이터에 헤더를 추가하여 IP 계층으로 보냄

 

 

역다중화

  • 수신 측에 UDP는 하나인데 프로세스 포트는 여러 개 존재하여 역다중화 필요
  • 수신한 UDP에서 헤더를 제거하고 포트번호에 의거 메시지를 보냄

 

 

 

UDP 응용

  1. 단순한 요청-응답 통신을 하는 것이 적합
    ex) DNS(53, 도메인에 대한 IP 요청 및 응답)
  2. 내부에 흐름 제어와 오류 제어 매커니즘을 가진 프로세스에 적합
    ex) TFTP(69, 프로세스는 오류 제어와 흐름 제어 프로세스를 가지고 있음)
  3. 멀티캐스팅에 적합한 전송 프로토콜
    ex) 네트워크 라우팅(RIP, OSPF) 프로토콜에 응용
  4. 네트워크 관리 응용에 적합
    ex) SNMP(161)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형
LIST