본문 바로가기

네트워크

모두의 네트워크 - 전송 계층 (1) 전송 계층의 역할 및 TCP와 3-way 핸드셰이크

포스팅은 모두의 네트워크에 기반하여 작성되었습니다. 물리, 데이터 링크, 네트워크 계층만 있으면 목적지에 데이터를 보낼 수 있습니다. 하지만 데이터가 손상되거나 유실되더라도 이 계층에서는 아무것도 해 주지 않습니다.

 

전송 계층은 목적지에 신뢰할 수 있는 데이터를 전 ㅇ달하기 위해 필요합니다.

 

목차

1. 전송 계층의 역할

2. TCP 구조 및 3 way handshake

 

 

전송 계층의 역할


전송 계층에는 두 가지 기능이 있어요. 첫 째는 오류를 점검하는 기능입니다. 오류가 발생하면 데이터를 재전송호도록 요청해요. 다른 한 가지 역할은 전송된 데이터의 목적지가 어떤 애플리케이션인지 식별합니다.

 

 

연결형 통신과 비연결형 통신

전송 계층의 특징을 간단히 설명하면 신뢰성/정확성효율성으로 구분할 수 있습니다. 신뢰성/정확성은 데이터를 목적지에 문제없이 전달하는 것이고 효율성은 데이터를 빠르게 전달하는 것입닌다.

 

여기서 신뢰할 수 있고 정확한 데이터를 전달하는 통신을 연결형 통신(TCP 프로토콜 사용)이라 하고 효율적으로 데이터를 전달하는 통신을 비연결형 통신(UDP 프로토콜 사용)이라고 합니다.

 

연결형 통신에서는 그 아주 유명한 3 way handshake / 4 way hadnshake 가 일어나게 됩니다. 

 

 

 

TCP


각 계층에서는 헤더를 붙인다고 했는데요. 전송 계층에서 TCP로 전송할 때 붙이는 헤더를 TCP 헤더라 부르고 TCP 헤더가 붙은 데이터를 세그먼트라고 해요. 

 

앞서 배운 내용을 복습하면

데이터 링크 계층에서 트레일러와 MAC 주소를 붙인 데이터를 프레임

네트워크 계층에서 IP 헤더를 붙인 것을 IP 패킷

마지막으로 전송 계층에서 TCP 헤더를 붙인 것을 세그먼트라고 합니다.

 

 

tcp 헤더

 

연결형 통신에서는 데이터를 전송하기 전에 연결(connection)이라는 가상의 독점 통신로를 확보해야 합니다. 위 TCP 헤더 예약 영역옆에 ACK, FIN 등의 코드가 보일거에요. 총 6비트로 구성된 코드 비트에서 연결의 제어 정보를 기록하고 있습니다.

 

각 비트의 초기값은 0이고 활성화되면 1이 됩니다. 연결을 확립하려면 SYN, ACK가 필요합니다. SYN(synchronize sequence numbers)연결 요청, ACK(acknowledgment) 확인 응답을 뜻합니다.

 

여기서 연결을 확립할 때 3-way-handshake가 일어납니다. 연결을 종료할 때는 4-way-handshake 가 일어나고 추가로 FIN 코드 비트가 필요합니다.

 

컴퓨터 A와 B가 TCP 통신을 한다고 했을 때 아래와 같이 패킷을 교환해서 연결을 확립합니다.

 

1. A의 연결 확립 요청(SYN 활성화)

2. B의 연결 확립 응답(ACK 활성화)과 연결 확립 요청(SYN 활성화)

3. A 연결 확립 응답(ACK 활성화)

 

연결 종료할 때(4-way-handshake)는 아래와 같이 패킷을 교환합니다. 

1. A의 연결 종료 요청(FIN 활성화)

2. B의 연결 종료 응답(ACK활성화)

3. A의 연결 종료 요청(FIN 활성화)

4. B의 연결 종료 응답(ACK 활성화)