Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- http
- 종류
- 컴퓨터네트워크
- 자료구조
- PYTHON
- dockerfile
- airflow
- 운영체제
- AWS
- linux
- Django
- TCP
- 파이썬
- Docker
- redshift
- Go
- 데이터엔지니어링
- 가상환경
- 데이터 웨어하우스
- TIL
- S3
- 데이터베이스
- 컴퓨터 네트워크
- airflow.cfg
- 정리
- 데이터 파이프라인
- sql
- 데이터 엔지니어링
- HADOOP
- 데브코스
Archives
- Today
- Total
홍카나의 공부방
[컴퓨터 네트워크] 14-1. TCP 개요 본문
Transmission Control Protocol(TCP)
- TCP는 전송 계층에서 사용되는 연결지향 서비스다.
- TCP에서는 단위 데이터를 Segment라고 부른다. ( 쉽게 이해하려면 그냥 패킷을 세그먼트라고 부른다고 이해하자. )
- UDP와는 다르게 TCP는 Connection당 수신 버퍼를 할당한다.
TCP - Numbering System(Sequence #)
- 시퀀스 번호는 TCP 세그먼트에 포함된 첫번째 데이터의 번호다. 만약 시퀀스 번호가 1000이라면, 세그먼트 데이터의 첫번째 바이트 번호가 1000이라는 뜻이다. 보통 바이트 단위로 셈을 한다.
- TCP를 통해 데이터를 전송할 때, 데이터 크기가 MSS인 1460Bytes를 넘는다면, 세그먼트는 분할(segment)되어 보내진다. 이때 전송되는 데이터의 순서를 식별하는데 시퀀스 번호가 사용된다.
- 시퀀스 번호는 난수로 정해진다. 꼭 0부터 시작하지 않는다는 것이다. 모든 TCP 세그먼트 데이터 번호가 0으로 시작하게 되면 해킹이 쉽게 발생할 수 있기 때문이다.
TCP - Numbering System(Ack #)
- Ack 번호(일명 애크)는 수신자가 받기를 원하는 다음 TCP 세그먼트 데이터 번호다.
- 예를 들어 수신자가 1001~1100번 바이트까지 데이터를 받았으면, Ack(#1101)을 송신자에게 보내어 다음 데이터를 요구한다.
- 만약 송신자가 data 1101~1200번, 1201~1300번 패킷을 연달아 보냈을 경우, 수신자가 ack를 일일이 보내진 않는다. Ack는 Overhead가 발생하므로, 이를 최소화하기 위해서 연속된 패킷 수신에 대해서 Ack를 하나만 보내기도 한다.
Segment Header - control field
- Segment의 헤더에는 Source, Destination Port 주소, 시퀀스 번호, ACK 번호, HLEN, 체크섬 등이 들어간다.
- 그중에서 Control Field(TCP Flags)에 주목할 필요가 있다.
- TCP 통신의 목적이 어느 것이냐에 따라 이 컨트롤 필드의 값이 달라진다. 컨트롤 필드의 값은 다음과 같다.
- SYN : 연결 설정때 사용하는 필드 값
- FIN : 연결 해제때 사용하는 필드 값
- RST : 비정상 연결을 해제할 때 사용하는 필드 값
- PSH : 송신자가 수신자에게 버퍼링 된 데이터를 즉시 응용프로그램에 푸시하도록 요청하는 것. 잘 안 쓴다고 한다.
- ACK : 이 필드 값이 1이면 ACK Number가 같이 전송된다. ( 단, 데이터 없이 헤더만 간다. )
- URG : 긴급 데이터를 요청할 때 사용한다. 보통 TCP는 In-band 전송으로, 모든 것이 순서에 맞게 전송되는 방식이다. 그러나 Urgent data를 전송하면 해당 데이터를 수신 버퍼에 보내서 응용의 pulling을 기다리지 않고, 바로 수신 응용프로세스로 데이터를 전송하게 된다. 이를 Out-of-band 전송이라고 한다.
연결 설정(3-way handshake), 데이터 전송, 연결해제, 흐름제어, 오류제어, 혼잡제어는 다른 글에서 다루겠다.
UDP와 달리 TCP는 다룰 게 많아서..
반응형
'Computer Network' 카테고리의 다른 글
[컴퓨터 네트워크] 14-3. TCP의 흐름제어(+ silly window syndrome), 오류제어, 혼잡제어 (0) | 2023.04.30 |
---|---|
[컴퓨터 네트워크] 14-2. TCP의 연결설정(3-way handshake), 데이터 전송, 연결 해제 (0) | 2023.04.29 |
[컴퓨터 네트워크] 13. UDP 간단 정리 (0) | 2023.04.22 |
[컴퓨터 네트워크] 12. Transport Layer(전송계층)과 포트 번호 vs Process ID, Pushing과 Pulling, UDP 왜써요? (1) | 2023.04.20 |
[컴퓨터 네트워크] 11. Segmentation vs Fragmentation (0) | 2023.04.20 |