본문 바로가기
IT/네트워크 기초

TCP의 구조

by 금소쿠 2022. 1. 4.
반응형

TCP란 무엇인가?

이번에는 신뢰성과 정확성을 우선으로 하는 연결형 통신 프로토콜인 TCP에 대하여 알아보겠습니다.

응용 계층부터 물리 계층까지 계층별로 데이터를 전달할 때 헤더를 붙이는 것을 캡슐화라고 배웠습니다.

그리고 캡슐화와 반대로 데이터 수신 측에서 물리 계층부터 응용 계층까지 계층별로 데이터를 전달할 때 헤더를 제거하는 것이 역 캡슐화입니다.

TCP로 전송할 때 붙이는 헤더를 TCP 헤더라고 하고, 이 TCP 헤더가 붙은 데이터를 세그먼트(segment)라고 합니다.

IP 헤더와 마찬가지로 TCP 헤더도 순서대로 정보가 나열되어 있다는 것을 기억하시면 됩니다.

데이터를 전송하려면 먼저 연결(connection)이라는 가상의 독점 통신로를 확보해야 합니다.

이 연결을 확립한 후에 데이터를 전송할 수 있습니다.

TCP 헤더에는 코드 비트라는 부분이 있는데 TCP 헤더의 107번째 비트부터 112번째 비트까지의 6비트로 연결의 제어 정보가 기록되는 곳입니다.

또한 코드 비트는 각 비트별로 역할이 있습니다.

코드 비트(6비트)
URG ACK PSH RST SYN FIN
0 0 0 0 0 0
1비트 1비트 1비트 1비트 1비트 1비트

초기값은 0이고 비트가 활성화되면 1이 됩니다. 연결을 확립하려면 이 중 SYN과 ACK가 필요합니다.

SYN은 연결 요청, ACK는 확인 응답을 뜻합니다.

 

 

3-way 핸드셰이크란 무엇인가?

연결(connection)은 SYN과 ACK를 사용하여 확립할 수 있습니다. 신뢰할 수 있는 연결을 하려면 데이터를 전송하기 전에 패킷을 교환하는데, 기본적으로 3번 확인합니다.

예를 들어 컴퓨터 1과 2가 있다고 가정을 하고 설명하겠습니다.

① 통신을 하려면 컴퓨터 2에게 허가를 받아야 하므로, 먼저 컴퓨터 1에서 컴퓨터 2로 연결 확립 허가를 받기 위한 요청(SYN)을 보냅니다.

 

② 컴퓨터 2는 컴퓨터 1이 보낸 요청을 받은 후에 허가한다는 응답을 회신하기 위해 연결 확립 응답(ACK)을 보냅니다. 동시에 컴퓨터 2도 컴퓨터 1에게 데이터 전송 허가를 받기 위해 연결 확립 요청(SYN)을 보냅니다.

 

③ 컴퓨터 2의 요청을 받은 컴퓨터 1은 컴퓨터 2를 허가한다는 응답으로 연결 확립 응답(ACK)를 보냅니다.

 

이때 연결 확립을 위해 코드 비트의 SYN과 ACK가 1로 활성화됩니다.

① 연결 확립 요청
URG ACK PSH RST SYN FIN
0 0 0 0 1 0
② 연결 확립 응답 + 연결 확립 요청
URG ACK PSH RST SYN FIN
0 1 0 0 1 0
③ 연결 확립 응답
URG ACK PSH RST SYN FIN
0 1 0 0 0 0

이처럼 데이터를 보내기 전에 연결을 확립하기 위해 패킷 요청을 세 번 교환하는 것을 3-way 핸드셰이크(3-way handshake)라고 합니다.

조금 더 첨가하면 '핸드셰이크'는 사람들이 상대방을 확인하고 악수를 하는 것처럼 데이터 통신에서도 확실하게 데이터가 전송되었는지 확인하면서 이루어지는 통신 수단입니다.

그리고 데이터를 전송한 후에는 연결을 끊기 위한 요청을 교환해야 합니다.

연결을 끊을 때는 FIN과 ACK를 사용하는데, FIN은 연결 종료를 뜻합니다.

예를 들어 컴퓨터 1과 2가 있다고 가정하겠습니다.

① 컴퓨터 1에서 컴퓨터 2로 연결 종료 요청(FIN)을 보냅니다.

 

② 컴퓨터 2에서 컴퓨터 1로 연결 종료 응답(ACK)을 반환합니다.

 

③ 또한 컴퓨터 2에서도 컴퓨터 1로 연결 종료 요청(FIN)를 보냅니다.

 

④ 컴퓨터 1에서 컴퓨터 2로 연결 종료 응답(ACK)을 반환합니다.

 

TCP는 신뢰성과 정확성을 중요하게 여기는 프로토콜이라서 상대방이 문제가 없는지 확실히 확인하는 것입니다.

연결을 종료할 때는 코드 비트의 FIN과 ACK가 1로 활성화됩니다.

① 연결 종료 요청
URG ACK PSH RST SYN FIN
0 0 0 0 0 1
 연결 종료 응답
URG ACK PSH RST SYN FIN
0 1 0 0 0 0
 연결 종료 요청
URG ACK PSH RST SYN FIN
0 0 0 0 0 1
④ 연결 종료 응답
URG ACK PSH RST SYN FIN
0 1 0 0 0 0
반응형

'IT > 네트워크 기초' 카테고리의 다른 글

UDP의 구조  (0) 2022.01.07
포트 번호의 구조  (0) 2022.01.06
전송 계층의 역할  (0) 2022.01.03
라우터의 구조  (0) 2021.12.30
서브넷의 구조  (0) 2021.12.30

댓글