300x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- dp
- google coding competition
- 동적프로그래밍
- BFS
- 코딩 테스트
- AI
- 파이썬
- 코딩테스트
- 딥러닝
- 네트워크
- 알고리즘
- 그래프
- 리눅스
- DFS
- CSS
- kick start
- 브루트포스
- 순열
- PYTHON
- 구글 킥스타트
- 동적 프로그래밍
- 코딩
- 프로그래머스
- OS
- nlp
- 운영체제
- 프로그래밍
- 백준
- 킥스타트
- linux
Archives
- Today
- Total
오뚝이개발자
[네트워크] CH18 TCP 본문
728x90
300x250
학습 목차
- TCP의 기능
- 수송 프로토콜로서 제공하는 서비스
- 세그먼트 형태
- 각 필드의 의미와 주요기능
- 연결설정과 해제
- 흐름제어
TCP의 기능
- TCP는 프로세스간 통신, 스트림 전달 서비스(UDP는 하나의 메시지를 만들어 전달 but TCP는 바이트의 스트림을 전송), 전이중 통신(송수신 양방향), 연결지향서비스, 신뢰성 있는 서비스를 제공
- 연결설정과 해제 과정 존재
- 데이터의 안전한 도착을 확인하는 ACK를 사용해 신뢰성 있는 전송을 제공
- 프로세스 간의 통신을 위해 포트 번호 사용
- 스트림 전달 서비스 : TCP는 데이터를 바이트의 나열로 전달함
- 효율성을 위해 여러 바이트를 블록으로 구성된 세그먼트로 만들어 전송
TCP의 특징
TCP는 모든 바이트에 번호를 부여한다.
- 시작번호는 0~2^32 - 1 사이의 임의의 번호를 가짐
- 번호는 흐름제어, 에러제어에 사용
- 세그먼트의 순서번호는 해당 세그먼트가 나르는 데이터의 첫 번째 바이트 번호이다.
ACK 번호는 수신해야 할 다음 바이트 번호이다.
- 현재 받은 번호가 아닌 다음 수신해야 할 번호를 사용하는 것이 효율적
- 예컨대, ACK 500신호가 사라져 도달하지 않았는데 ACK1000을 받았으면 그 이전까진 안전하게 도달했음을 알 수 있다
- ACK번호는 누적값으로 수신자는 해당 번호 이전의 모든 바이트를 안전하게 받았음을 의미
TCP 세그먼트의 형태
- 송수신자 포트 번호를 사용해 TCP 위에 올라가는 어떤 프로세스가 통신하는 건지 구분
- TCP 헤더 : 20바이트이며 옵션이 있으면 60바이트까지 될 수 있다
- HLEN : 헤더가 가변적이라 어디가지가 헤더 영역인지 알기 위해 필요. 헤더는 4바이트 단위로 표기
- 체크섬
- 데이터에 대한 오류 검사해 재전송에 의한 복구를 수행할 수 있다.
- TCP에서 체크섬은 강제사항(UDP는 선택사항)
- UDP에서와 같은 가상헤더를 포함해 계산
- 제어필드(6개) : TCP 연결 설정, 해제 메시지를 구분하는 기능을 함
- URG : 송신자는 수신자가 긴급메시지를 우선적으로 처리하길 원할 수 있다.
- ACK
- PSH : 송신TCP는 수신TCP가 버퍼링 하지 말고 즉시 데이터를 프로세스에게 전달할 것을 요구할 수 있다(주로 interactive service의 경우)
- RST : TCP가 비정상적인 상황 혹은 오랫동안 통신이 없으면 연결을 끊은(Reset)
- SYN : 연결설정
- FIN : 연결해제
TCP 연결설정
3단계 메시지 교환(Three way handshake)을 통해 연결 설정함
TCP 연결해제
TCP는 연결해제를 위해 3-way handshake와 4-way handshake 메시지 교환을 한다.
- 제어필드와 FIN을 사용해 연결 해제를 함
- 4-way handshake를 통한 연결해제는 half-close 상태를 만들어 수신은 가능하게 할 수 있다.
- 3-way handshake는 즉시 연결을 종료시킬 수 있다
흐름제어
송신TCP가 목적지로부터 ACK를 수신하기 전에 보낼 수 있는 데이터의 양을 정한다.
- TCP는 슬라이딩 윈도우 프로토콜(sliding window protocol)을 이용한다
- TCP는 바이트 단위로 윈도우 크기(수신 가능한 데이터 양)을 명시한다
- 윈도우 크기는 시간에 따라 변할 수 있다.
728x90
300x250
'CS 기초 > 네트워크' 카테고리의 다른 글
[네트워크] CH20 네트워크 보안 (0) | 2020.11.15 |
---|---|
[네트워크] CH19 네트워크 관리 SNMP (0) | 2020.11.15 |
[네트워크] CH17 전송프로토콜과 UDP (0) | 2020.11.15 |
[네트워크] CH16 멀티캐스팅 (0) | 2020.11.15 |
[네트워크] CH15 라우팅 프로토콜 (0) | 2020.11.15 |
Comments