네트워크) 소켓을 말소한다.

2023. 7. 6. 01:09·CS/네트워크

본 내용은 “성공과 실패를 결정하는 1%의 네트워크” 를 참고하여 작성하였습니다


보통 데이터 송수신끝나면 연결을 끊게 된다.

이때 프로토콜 스택은 클라이언트나 서버 양쪽다 상관없이 끊을수 있도록 되어 있다.

서버쪽에서 먼저 끊는다고 가정할때 다음과 같은 동작을 수행하게 된다.

서버측

  1. Soket라이브러리에서 close를 호출
  1. 프로토클 스택이 TCP헤더를 생성 이때 연결 끊기 정보를 포함한다.

    구체적으로는 FIN 비트에 1을 설정하고 이를 송신(IP담당부분에 넘겨줌)

  1. 이와 동시에 서버측 소켓에 연결 끊기 동작이 들어갔다는 제어정보를 입력함

클라이언트측

  1. FIN이 1로 설정된 TCP 헤더가 포함된 메세지를 수신한다.
  1. 클라이언트 측 프로토콜 스택은 자신의 소켓에 서버의 연결동작이 끊기가 됐다는걸 기록함
  1. 해당 패킷을 받앗다는(FIN 1인) ACK번호가 포함된 TCP 헤더가 포함된 메세지를 송신
  1. 어플리케이션이 해당 데이터를(서버에서 보낸) read를 호출하여 읽게됨.
  1. 데이터를 보내는것이 아닌 어플리케이션에 작업완료신호를 보내준다.

즉 단순하게 정리하자면

서버 먼저 종료시

  1. 서버 FIN송신
  1. 클라이언트 ACK송신
  1. 클라이언트 FIN송신
  1. 서버 ACK송신

클라이언트 먼저 종료시

  1. 클라이언트 FIN송신
  1. 서버 ACK송신
  1. 서버 FIN송신
  1. 클라이언트 ACK송신

  • 위와같은 동작 중, 만약 FIN이 포함된 데이터가 정상적으로 수신이 되지 않았다면????
  • ACK번호가 되돌아 오지 않았기 때문에 FIN을 다시 수신해줘야한다.
  • 하지만 바로 FIN을 보내고 소켓을 말소하면 문제가 발생하게 된다.
  • 따라서 잠시 기다렸다가. 말소하게 된다.


Uploaded by N2T

반응형

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

네트워크) UDP를 사용하는 이유  (0) 2023.07.06
네트워크) IP프로토콜과 이더넷의 패킷 송수신 동작  (0) 2023.07.06
네트워크) 데이터의 송, 수신  (0) 2023.07.06
네트워크) 서버와의 접속 과정  (2) 2023.07.05
네트워크) 소켓 생성  (0) 2023.07.05
'CS/네트워크' 카테고리의 다른 글
  • 네트워크) UDP를 사용하는 이유
  • 네트워크) IP프로토콜과 이더넷의 패킷 송수신 동작
  • 네트워크) 데이터의 송, 수신
  • 네트워크) 서버와의 접속 과정
진ddang
진ddang
안녕하세요 진땅의 개발자 블로그 입니다. 피드백은 환영입니다. 깃헙 : https://github.com/it794613
    반응형
  • 진ddang
    맛동산이
    진ddang
  • 전체
    오늘
    어제
    • 분류 전체보기 (199)
      • 일기 그리고 목표 (1)
      • 웹 (20)
        • 리액트 (19)
      • 앱 (115)
        • Swift 문법 (15)
        • Swift (65)
        • SwiftUI (32)
        • 리액트 네이티브 (3)
      • CS (30)
        • 컴퓨터그래픽스 (8)
        • 운영체제 (6)
        • 네트워크 (16)
      • 알고리즘 (13)
        • 백준 (12)
        • 프로그래머스 (1)
      • 대외활동 (7)
        • ict한이음(2022.04) (2)
        • 멋쟁이 사자처럼 (5)
        • Apple Developer Academy (0)
      • 다양한 내용들 (8)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    dispatchqueue
    Protocol
    spritekit
    멋쟁이사자처럼
    영남대
    멋사
    백준
    c++
    ReactorKit
    Swift
    웹
    스유
    widget
    TCA
    cs
    composable architecture
    스위프트
    swift concurrency
    widgetkit
    네트워크
    문법
    uikit
    알고리즘
    운영체제
    대외활동
    후기
    리액트
    SwiftUI
    컴퓨터그래픽스
    위젯킷
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
진ddang
네트워크) 소켓을 말소한다.
상단으로

티스토리툴바