곰돌이볼 2023. 5. 4. 13:38

전송계층


  • 전송계층의 역할
    • 목적지까지 신뢰할 수 있는 데이터 전송
    • 오류 점검 → 오류 발생 시 재전송
    • 전송된 데이터가 사용되는 어플리케이션 식별
  • 전송계층의 특징
    • 신뢰성/정확성 : 신뢰할 수 있는 데이터 전송 
    • 효율성 : 데이터를 빠르고 효율적으로 전달
  • 통신방식
    • 연결형 통신
      • 상대방이 데이터를 받았는지 확인
      • TCP
    • 비연결형 통신
      • 상대방이 데이터를 받았는지 확인하지 않음
      • UDP

 

TCP 구조


  • TCP
    • TCP 헤더 : TCP 전송 시 붙이는 헤더
    • 세그먼트(segment) : TCP 헤더가 붙은 데이터
  • TCP 헤더
    • 구조
      • 출발지 포트 번호(16비트)
      • 목적지 포트 번호(16비트)
      • 일련번호(32비트)
      • 확인 응답 번호(32비트)
      • 헤더 길이(4비트)
      • 예약 영역(6비트)
      • 코드 비트(6비트)
      • 윈도우 크기(16비트)
      • 체크섬(16비트)
      • 긴급 포인터(16비트)
      • 옵션
  • TCP의 데이터 전송 과정
    1. 연결(connection) : 가상의 독점 통신로 확보
      • 코드 비트(6비트) : 연결의 제어 정보를 기록
        • 초기값 : 0, 활성화 : 1
        • 연결 확립 : SYN, ACK 필요
        • 연결 종료 : FIN, ACK 필요
        • 구조
          • URG
          • ACK : 확인 응답
          • PSH
          • RST
          • SYN : 연결 요청
          • FIN : 연결 종료
    2. 데이터 전송

 

3-way Handshake


  • 3-way HandShake : TCP에서 연결 확립을 위한 패킷 요청을 3번 교환
    1. 컴퓨터1의 연결 확립 요청(SYN)
    2. 컴퓨터2의 연결 확립 응답(ACK) + 연결 확립 요청(SYN)
    3. 컴퓨터1의 연결 확립 응답(ACK)
  • 데이터 전송
    • TCP 헤더의 일련번호(sequence number)
      • 분할된 데이터의 순서(송신 → 수신)
      • 송신측에서 받은 확인 응답 번호(수신 → 송신)
    • TCP 헤더의 확인 응답 번호(acknowledgement number)
      • 다음에 받을 데이터의 순서(수신 → 송신)
  • 데이터 재전송
    • 재전송 제어 : 데이터 유실이나 손상 시 데이터 재전송
  • 버퍼
    • 수신측에서 연속된 세그먼트를 수신 시 일시적으로 세그먼트를 저장하는 장소
    • 연속된 세그먼트나 대량의 세그먼트를 수신시 사용
    • TCP 헤더의 윈도우 크기(window size) : 버퍼의 한계 크기 → 버퍼의 오퍼블로우 방지
    • 윈도우 크기를 통해서 확인 응답을 하나씩 하지 않고 연속적으로 송수신할 수 있는 데이터 크기 확인 가능
  • 연결 종료 패킷 교환 과정
    1. 컴퓨터1의 연결 종료 요청(FIN)
    2. 컴퓨터2의 연결 종료 응답(ACK)
    3. 컴퓨터2의 연결 종료 요청(FIN)
    4. 컴퓨터1의 연결 종료 응답(ACK)

 

포트 번호(port number)


  • 포트 번호(port number)
    • 데이터가 사용되는 어플리케이션을 구분하기 위해서 사용
    • 범위 : 0 ~ 65535번 포트
      • 0 ~ 1023번 포트(well-known ports) : 주요 프로토콜이 사용하도록 예약되어 있음
        • 22 : SSH
        • 25 : SMTP
        • 53 : DNS
        • 80 : HTTP
        • 110 : POP3
        • 443 : HTTPS
      • 1025~ 번 포트(random ports) : 클라이언트 측의 송신 포트로 사용
    • TCP 헤더의 출발지 포트 번호(source port number)
    • TCP 헤더의 목적지 포트 번호(destination port number)

 

UDP


  • UDP
    • 비연결형 통신이기 떄문에 확인 작업을 하나하나 하지 않음
    • 데이터를 효율적으로 빠르게 전송
    • 동영상이나 스트리밍 전송할 때 많이 사용되는 기술
    • 브로드캐스트(broadcast) 가능 : 데이터 일괄 전송 가능 ↔ TCP는 목적지를 알아야 하기 때문에 일괄 통신 불가능
  • UDP 헤더
    • 출발지 포트 번호(16비트)
    • 목적지 포트 번호(16비트)
    • 길이(16비트)
    • 체크섬(16비트)