일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- js
- python
- 정재남
- 제로초
- javascript
- 토익
- 리덕스
- 자바스크립트
- 렛츠기릿 자바스크립트
- 코어 자바스크립트
- 코드스테이츠
- 파이썬
- 타임어택
- 백준
- 리트코드
- Async
- programmers
- codestates
- 손에 익히며 배우는 네트워크 첫걸음
- 2주 프로젝트
- 4주 프로젝트
- 타입스크립트 올인원
- 타입스크립트
- 회고
- LeetCode
- 알고리즘
- 프로그래머스
- til
- 리액트
- SQL 고득점 Kit
Archives
- Today
- Total
Jerry
손에 익히며 배우는 네트워크 첫걸음 #9 본문
반응형
TCP는 적절한 애플리케이션 데이터를 전달하기 위해서 이용되는 프로토콜입니다.
프로토콜이란 컴퓨터끼리 통신할 때에 정해져 있는 '공통된 절차의 규약'입니다. ex) IP, HTTP, FTP, SMTP
TCP 기능으로 애플리케이션 간의 데이터 전달 외에도 데이터를 분할하는 기능이 있습니다. 데이터 사이즈 최대치인 MSS(Maximum Segment Size)를 넘을 경우 여러 개로 분할합니다.
TCP 연결 성립
애플리케이션 간에 신뢰성 있는 데이터 전송을 수행하기 위하여 'Three-way handshake'라는 기법을 사용합니다.
- A to B: 연결 요구(SYN 플래그) - 연결해도 될까요? / 데이터입니다.
- B to A: 응답(SYN/ACK 플래그) - 네, 이쪽에서도 연결하겠습니다. / 받았습니다.
- A to B: 응답(ACK 플래그) - 알겠습니다.
이처럼 TCP 연결을 성립시키는 것을 가리켜, 연결형 프로토콜이라고 부릅니다.
TCP 연결 종료
- A to B: 연결을 종료해도 될까요? (FIN/ACK)
- B to A: 네, 괜찮습니다. (ACK)
- A to B: 이쪽에서도 연결을 종료하겠습니다(FIN/ACK)
- B to A: 네, 알겠습니다. (ACK)
데이터 전송 시 동작
연결을 성립시킨 뒤에 애플리케이션끼리 데이터를 전송할 때, TCP는 '윈도우 제어', '재전송 제어', '혼잡 제어'와 같은 제어 기능을 구사합니다.
- 윈도우 제어: 얼만큼의 TCP 세그먼트들을 한 번에 보낼 것인가를 제어하는 시스템
- 재전송 제어: 어떠한 이유에 의해 데이터가 유실되는 경우, 유실된 TCP 세그먼트를 재전송하는 시스템
- 혼잡 제어: 네트워크의 혼잡을 회피하는 제어
이처럼 다양한 제어를 사용하여 신뢰성 높은 애플리케이션 간 데이터 전송을 실현합니다. 단, 이러한 제어 기능을 수행하기 위해서는 TCP 헤더에 다양한 정보가 필요합니다. 그러다 보니 필요하지 않은 정보가 포함이 되는데, 이러한 정보나 처리를 통틀어서 '오버헤드'라고 부릅니다. TCP 데이터 전송에는 많은 오버헤드가 발생할 가능성이 있습니다. 그래서 이용되는 것이 UDP입니다.
위 내용은 "손으로 익히며 배우는 네트워크 첫걸음, Gene, 한빛미디어를 직접 구매하여 공부하면서 메모한 내용입니다.
반응형
'CS > Network' 카테고리의 다른 글
손에 익히며 배우는 네트워크 첫걸음 #11 (0) | 2021.01.08 |
---|---|
손에 익히며 배우는 네트워크 첫걸음 #10 (0) | 2021.01.08 |
손에 익히며 배우는 네트워크 첫걸음 #8 (0) | 2021.01.05 |
손에 익히며 배우는 네트워크 첫걸음 #7 (0) | 2021.01.04 |
손에 익히며 배우는 네트워크 첫걸음 #6 (0) | 2020.12.31 |