CS/네트워크

[Network]4계층 TCP & UDP

용감한 개복치 2024. 10. 30. 03:13

Transport 계층

  • OSI 7 계층 분류에서 엔드 투 엔드 유저들이 신뢰성 잇는 데이터를 주고 받을 수 있도록 함.
  • 그위 세션, 프레젠테이션, 어플리케이션 레벨이 데이터 전달의 걱정을 안하게 해줌
    • 어플리케이션 프로세스 사이의 논리적 통신 제공 -> 데이터를 어떻게 전송할까 결정
    • host(라우터) 간의 논리적 통신을 제공한다? -> 네트워크 계층

TCP

  • OSI 7 계층 중 4층, 전송 계층
  • 연결 지향적, 신뢰성, 데이터 전송 보장
    • udp 보다 속도 느림
    • point to point
  • 웹, 이메일, 파일 전송 등에 사용
  • 흐름 제어, 혼잡 제어
  • 3-way handshaking 으로 연결, 4-way handshaking 으로 해제 -> tcp 헤더 필드 값 사용

3-way handshaking

  • TCP 의 접속 설정
  • 네트워크 연결을 설정
  • 양쪽의 준비를 보장하고 검증

과정

  • SYN: 클라이언트 → 서버
    • 클라이언트가 syn segment 서버로 보냄
    • 서버는 수신
  • SYN+ACK: 서버 → 클라이언트
    • 서버가 클라이언트에게 ack segment, 동시에 syn segment 보냄
    • 클라이언트가 ack segment 받으면 ESTAB 상태
  • ACK: 클라이언트 → 서버
    • 클라이언트가 서버에게 ack segment 전송
    • 서버도 ack segment 받으면 ESTAB 상태

4-way handshaking

  • TCP 의 접속 해제

과정

  • FIN: 클라이언트 → 서버
    • 클라이언트가 서버에게 fin segment 보냄
  • ACK: 서버 → 클라이언트
    • 서버는 fin 받고, 확인 ack 를 클라이언트에게 보냄
    • 데이터를 모두 전송 후 통신 끝날때 까지 대기
  • FIN: 서버 → 클라이언트
    • 서버가 데이터 모두 보내고 연결 종료에 합의하는 fin 패킷 클라이언트에게 전송
  • ACK: 클라이언트 → 서버
    • fin 을 받은 클라이언트가 응답으로 서버에게 ack 전송
    • time_wait 상태로 의도치 않은 에러로 연결이 데드락 빠지는 것을방지
    • 이후 종료

차이

  • fin, 서버가 보낼 데이터가 남았는가를 검증하는 단계
  • 단, fin 이후에 유실 및 지연된 데이터가 도착 할 수 있으므로 time_wait 단계가 추가됨

L4 스위치 ( 근데 이제, NLB 이해를 곁들인... )

  • 얘가 가상화 된게 AWS NLB
  • 로드밸런싱을 처리하는 장비 -> 외부에서 들어오는 모든 요청은 바로 서버로 가지않고 여기서 로드밸런싱함
  • TCP/UDP 프로토콜의 헤더를 분석 -> 3-way handshaking과 4-way handshaking를 실시
  • IP, port, 세션 정보 필요
  • L4 스위치를 기준으로 내외부 망이 나뉨
    • 내부 망의 서버가 각자 가지고 있던 공인 IP 사라지고 모든 요청을 L4스위치로 가져가기 때문에 얘만 공인 IP를 가지게 됨 -> NLB가 고정 IP 를 갖는 과정
    • 외부에서 내부 서버로 직접 접속할 방도 X -> 장비 자체를 대상으로 공격이 수행되거나 중간 방화벽 리소스 소비하는 방식으로 서비스 중단 일으킴

UDP

  • OSI 7 계층 중 4층, 전송 계층
  • 비연결형, 신뢰성 낮음
    • tcp 보다 빠름
    • 데이터 그램 방식으로 패킷 교환
    • 전송 순서, 수신여부 확인 x
  • 헤더에 checksum 필드로 최소한의 오류 검출
  • 1:n 의 스트리밍 서비스에 사용

 

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

[web]웹 통신  (0) 2022.02.17