컴퓨터 네트워크: A TCP Connection

2021. 9. 24. 04:53·Computer Science/컴퓨터 네트워크
반응형

TCP: Transmission Control Protocol

 

3. A TCP Connection

 

Connection establishment using three-way handshake

 

 

data 전송 전 연결 setup 과정.

해당 과정이 끝나야 버퍼가 생성되고 data 전송이 가능하다.

서버는 클라이언트보다 먼저 실행해서 클라이언트의 연결 요청을 대기하고 있어야 한다.

 

순서

1. 클라이언트는 Control field의 SYN에 1을 셋팅해 연결요청 패킷임을 명시한 뒤 해당 패킷을 서버에게 보내 연결을 요청한다. (seq: 8000- 랜덤 번호. SYN 패킷이 잘 도착했는지 확인하는 역할)

2. 서버는 ACK을 클라이언트에게 전송해 연결요청을 허가(SYN에 대한 응답)한다. 동시에 SYN을 클라이언트에게 보내 서버도 연결요청을 한다.(seq: 15000- 랜덤 번호 / ack: 8001- 8000번까지 패킷을 받았고 8001번을 보내달라는 응답)

3. 클라이언트는 서버가 보낸 SYN에 ACK을 보내 응답한다. (ack: 15001- 15000번까지 패킷을 받았고 15001번을 보내달라는 응답)

4. 연결 완료

 

* seq != SYN

seq는 패킷 번호, SYN은 연결 요청 패킷

 

 

Data Transfer

연결이 끝나고 데이터를 주고 받는 과정.

 

 

Connection termination using three-way handshake

data 전송이 끝난 뒤 연결 종료 과정.

 

순서

1. 클라이언트는 Control field의 FIN에 1을 셋팅해 종료요청 패킷임을 명시한 뒤 해당 패킷을 서버에게 보내 연결 종료를 요청한다.

2. 서버는 ACK을 클라이언트에게 전송해 종료요청을 허가(SYN에 대한 응답)한다. 동시에 SYN을 클라이언트에게 보내 서버도 종료요청을 한다. 클라이언트 sending 버퍼 삭제.

3. 클라이언트는 서버가 보낸 SYN에 ACK을 보내 응답한다. 

4. 연결 종료 및 버퍼 삭제

 

 

 

연결 및 종료 과정

client 함수

socket: 소켓 생성

connect: 연결요청

write: 데이터 보내기

read: 데이터 읽기

close: 연결 종료 요청

 

server 함수

socket: 소켓 생성

bind: 생성한 소켓에 IP/Port Number 지정

listen: 서버 소켓 생성

accept: 연결 요청이 오기를 대기

read: 데이터 읽기 

write: 데이터 보내기

close: 연결 종료 요청

 

 

Half-Close 반만 종료

 

1. 클라이언트가 서버에게 FIN 요청을 보낸다.

2. 서버가 ACK을 보내 연결 종료 요청에 응답했다. 이때 클라이언트의 sending buffer가 소멸되지만 recieving buffer는 남아있으므로 서버가 보낸 데이터를 읽을 수는 있다. 

3. 클라이언트의 close 요청 수락 후에도 서버가 보낼 데이터 있으면 계속 보낸다. 서버는 클라이언트에게 보낼 데이터를 다 보내고 FIN을 보내 연결 종료를 요청한다. 

4. 클라이언트는 ACK을 보내 연결 종료 요청에 응답한다.(sending buffer가 삭제된 상태이므로 다른 말은 못하고 응답만 할 수 있음)

5. 연결 종료

 

 

 

 


자료 출처:

  • TCP/IP Protocol Suite 4th Edition Slide
    (Behrouz A. Forouzan 저, McGraw-Hill, 2010)
반응형
저작자표시 비영리 변경금지 (새창열림)

'Computer Science > 컴퓨터 네트워크' 카테고리의 다른 글

컴퓨터 네트워크: Flow Control  (0) 2021.10.05
컴퓨터 네트워크: Windows in TCP  (0) 2021.10.01
컴퓨터 네트워크: State transition diagram  (0) 2021.10.01
컴퓨터 네트워크: Segment  (0) 2021.09.24
컴퓨터 네트워크: TCP Services, TCP Features  (0) 2021.09.09
컴퓨터 네트워크: Addressing  (0) 2021.09.09
'Computer Science/컴퓨터 네트워크' 카테고리의 다른 글
  • 컴퓨터 네트워크: Windows in TCP
  • 컴퓨터 네트워크: State transition diagram
  • 컴퓨터 네트워크: Segment
  • 컴퓨터 네트워크: TCP Services, TCP Features
청량리 물냉면
청량리 물냉면
프로그래밍 공부를 하고 있습니다. 공부 내용 정리 겸 정보 공유를 목적으로 합니다.
    반응형
  • 청량리 물냉면
    노력중인 블로그
    청량리 물냉면
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 프로그래밍
        • Programming
        • C | C++
        • Java
        • Python
      • 웹 프로그래밍
        • HTML | CSS
        • JavaScript | TypeScript
        • React
        • Vue.js
        • Next.js
        • Spring & Spring Boot
        • JSP & Servlet
        • DB
      • 웹 프로젝트
        • 웹 프로젝트
        • 🥨스낵몰
        • 👨‍👨‍👧‍👧소셜 가계부
        • 🌜꿈 일기장
        • 🔮포트폴리오 사이트
        • 🏃‍♂️팀 프로젝트: 일정관리 프로그램
        • 📈팀 프로젝트: AI기반 주식 분석 플랫폼
        • 😺Just Meow It: 고양이의 조언
      • 앱 프로그래밍
        • Flutter
        • Kotlin
      • Problem Solving
        • 백준
        • 프로그래머스
        • SWEA
      • Computer Science
        • 알고리즘
        • 컴퓨터 네트워크
        • 이산수학
      • Developer
        • 후기
        • 자료정리
        • 취업 | 취준
        • 웹개발 교육 프로그램
        • TIL
  • 블로그 메뉴

    • 홈
    • Github
  • 공지사항

    • 프로그래밍 공부 중😊
  • 인기 글

  • 태그

    컴퓨터네트워크
    d3
    프로젝트
    Til
    자바
    mysql
    알고리즘
    Jiraynor Programming
    타입스크립트
    플러터
    AWS
    공식문서
    클론 프로젝트
    React
    리액트
    백준
    SWEA
    포트폴리오
    spring boot
    자바스크립트
    뉴렉처
    블로그 제작
    파이썬
    Next.js
    bfs
    웹사이트
    구현
    프로그래머스
    ZeroCho
    강의내용정리
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
청량리 물냉면
컴퓨터 네트워크: A TCP Connection
상단으로

티스토리툴바