Kirby [네트워크] Day 4
Dev/CS

[네트워크] Day 4

ragabys 2023. 11. 29.

서버 연결 종료

클라이언트 혹은 서버 어느 쪽이든 데이터 보내기를 완료한 쪽에서 연결 끊기 단계에 들어간다.

서버 측에서 연결 끊기 단계에 들어가는 경우, 서버측 어플리케이션이 먼저 Socket 라이브러리의 close를 호출한다.

서버 측의 프로토콜 스택은 TCP 헤더를 만들고, FIN 비트에 1을 설정하여 연결 끊기는 나타내는 정보를 담는다.

 

클라이언트가 FIN 비트가 1인 TCP 헤더를 받게 되면, 클라이언트는 패킷을 받았다는 사실 전달을 위한 ACK 번호를 서버에게 반송하고,

클라이언트는 read를 호출하여 서버가 보낸 데이터를 웹 어플리케이션에 전달하고 난 뒤, 마찬가지로 FIN 비트를 1로 설정한

TCP 헤더를 서버 측에 전달하고 서버 측은 그에 대한 ACK 번호 응답을 반송하게 된다.

 

TCP 전체 동작

 

패킷

패킷은 헤더와 데이터 두 부분으로 구성된다. 헤더는 수신처를 나타내는 주소 등의 제어 정보가 담겨있고,

데이터는 패킷으로 전달하는 데이터가 담겨있다.

 

패킷은 송신처로 인해 생성되고, 가까운 중계 장치에 전달된다. 중계 장치는 패킷 헤더를 조사하여 목적지를 판단하고,

해당 목적지를 향해 다음 중계 장치로 송신하는 과정을 반복하여 수신처에 패킷을 전달하게 된다.

송신처에서 보낸 패킷이 수신처에 도착하면 그에 대한 회답 패킷을 보낸다. 이 때 수신처와 송신처를 묶어서 엔드노드라고 한다.

 

 

TCP/IP 패킷에는 MAC 헤더(이더넷용 헤더)와, IP 헤더(IP용 헤더)가 붙어있다. 

송신처에서 패킷의 목적지가 되는 액세스 대상 서버의 IP 주소를 IP 헤더의 수신처에 저장한다.

IP를 바탕으로 다음 라우터를 조사하고, 해당 라우터에 패킷이 도착하도록 이더넷에 요청한다.

이 때 다음 라우터에 할당된 이더넷 주소(MAC 주소)를 조사하고, 그것을 MAC 헤더에 기록하고, 패킷을 다음 라우터에 송신한다.

 

 

패킷 송수신 동작의 시작은 TCP 담당 부분이 IP 담당 부분에 패킷 송신을 의뢰하면서 시작된다.

TCP 담당 부분은 데이터에 TCP 헤더를 추가한 것을 IP 담당 부분에 전달한다. 이것이 패킷에 들어갈 내용이 되고, 통신 상대의 IP 주소를 나타낸다.

IP 담당 부분은 전달받은 내용에 IP 헤더와 MAC 헤더를 부가한다. IP 헤더는 IP 주소로 표시된 목적지까지 패킷을 전달할 때 사용하는

제어 정보를 기록한 것이다.

MAC 헤더는 이더넷 등의 LAN을 사용하여 가장 가까운 라우터까지 패킷을 운반할 때 사용하는 제어 정보를 기록한 것이다.

 

 

이렇게 만들어진 패킷은 네트워크 하드웨어에 전달된다. 이 때 하드웨어는 이더넷이나 무선 LAN 등을 의미하며, 일반적으로 LAN 어댑터라고 불린다.

LAN 어댑터에 의해 패킷은 신호 상태로 바뀌어 허브나 라우터 등의 중계 장치에 도달하게 되고, 중계 장치를 여러 차례 거쳐 수신처에 전달된다.

 

 

수신 동작은 송신 과정의 정반대로, 신호 형태의 패킷이 LAN 어댑터에 도착하면, 디지털 신호로 바꾼 뒤 IP 담당 부분에 전달된다.

IP 담당 부분은 MAC 헤더와 IP 헤더를 제외한 부분을 TCP 담당 부분에 전달하고,

TCP 담당부분은 TCP 헤더를 제외한 데이터를 전달하게 된다.

 

 

IP 담당 부분이 부가하는 IP 헤더에는 여러 정보가 담겨있는데, 가장 중요한 것은 수신처 IP 주소이다.

IP 담당 부분은 애플리케이션에서 통지한 IP 주소이므로, IP 주소가 잘못 지정되어도 책임은 애플리케이션 측에 있는 것으로 간주된다.

또한 송신처 IP 주소도 담겨진다. 일반적인 클라이언트 PC의 경우 LAN 어댑터가 하나뿐이지만, 여러 개의 LAN 어댑터가 연결될 경우

LAN 어댑터마다 다른 IP 주소가 할당되기 떄문에, IP 주소를 컴퓨터에 할당된 주소라고 동일시 하는 것은 무리가 있다.

 

 

IP 헤더가 부가된 패킷 앞에는 MAC헤더도 붙게된다. IP 헤더의 수신처 IP 주소를 참조하면 어디로 패킷을 전달해야할지 알 수 있지만,

이더넷은 TCP/IP 개념이 통용되지 않는다. 그렇기 때문에 이더넷에서 수신처를 판별하기 위해 사용하는 것이 MAC 헤더이다.

MAC 헤더에는 수신서 MAC 주소와 송신처 MAC 주소를 갖고 있다.

IP 헤더 내 IP 주소와의 차이점은 IP 주소는 32비트이지만, MAC 주소는 48비트라는 차이점이 있다.

또한 MAC 헤더에는 이더 타입이라는 정보가 담겨있는데, 패킷의 내용물이 무엇인지를 나타낸다.

이더넷의 내용물은 IP나 ARP라는 프로토콜 소켓이고, 각각 대응하는 값이 규칙으로 정해져있어 여기에 기록하게 된다.

 

 

수신처 MAC 주소는 MAC헤더에 기록되는 시점에서 모르는 정보이기 때문에,

수신처 IP 주소에서 MAC 주소를 조사하는 동작이 실행된다.

이 떄 사용하는 것이 ARP인데, 이더넷의 브로드캐스트라는 구조를 이용하여

이더넷에 연결된 전원에게 해당 IP 주소를 가지고 있는 지를 확인하고, MAC 주소 응답을 받아내는 방식이다.

이 과정에서 패킷을 보낼때마다 브로드캐스트를 할 순 없기 때문에, ARP 캐시라는 메모리 영역이 사용된다.

 

 

 

 

 

Today 확인 질문

1. 패킷에 저장되는 헤더에는 어떤 것들이 있나요?

 : MAC 헤더, IP 헤더, TCP 헤더가 패킷에 저장됩니다.

 

2. IP 헤더에 수신처 IP 주소가 담겨있는데, MAC 헤더를 사용하는 이유가 뭔가요?

 : 이더넷은 TCP/IP 개념이 통용되지 않기 때문에, 이더넷이 수신처를 판단할 수 있도록 하기 위해 MAC 헤더를 사용합니다.

 

 

 

 

References

성공과 실패를 결정하는 1%의 네트워크 원리

'Dev > CS' 카테고리의 다른 글

[네트워크] Day 6  (0) 2023.12.06
[네트워크] Day 5  (0) 2023.12.03
[네트워크] Day 3  (0) 2023.11.14
[네트워크] Day 2  (0) 2023.11.11
[네트워크] Day 1  (0) 2023.11.08

댓글