안녕하세요 허언증 입니다.
책에 있는 내용을 이해하고 서술 하듯 글을 적어 내려 갑니다. 저도 공부하는 차원에서 정리하는 글 이고 네트워크 과정에서 생략되는 부분도 발생할 수 있기 때문에 부족한 점도 있다는거 인지 하시고 편안하게 읽어주세요!! 역사처럼 물 흐르는식으로 스타일로 글을 작성합니다
chapter02
1.소켓을 생성한다.
2.서버에 접속한다.
3.데이터를 송/수신한다.
4.서버에서 연결을 끊어 소켓을 말소한다.
5.IP와 이더넷의 패킷 송/수신 동작
6.UDP 프로토콜을 이용한 송/수신 동작
4. 서버에서 연결을 끊어 소켓을 말소한다.
클라이언트 / 서버가 통신이 끝났다면 소켓을 말소 해야한다. 말소하는 과정은 간단하다. 보통 서버 보단 클라이언트 측에서 먼저 통신을 그만한다고 알리게 된다.
1. 클라이언트가 서버측에게 컨트롤 비트 FIN을 전송
2. 서버는 FIN을 받는다
3. 서버가 클라이언트에게 잘 받았다고 ACK전송
4. 클라이언트가 확인 했다고 다시 ACK전송
컨트롤 비트가 뭐야?? TCP 플래그(flag)가 뭐야?? Click!! Click!! (제작중)
4단계를 거치면 소켓은 말소가 된다. 하지만 통신이 끝났다고 바로 말소는 하지 않고 시간의 경과 한후 제거를 하게된다.
과연 뭐 때문일까?
물론 위 4가지의 과정을 단 번에 진행되면 상관이 없지만 다른 변수로 인해 하나라도 통신이 누락이 되면 문제가 생기고 다시 확인을 해야 하기 때문에 확실히 하기위해 바로 말소를 하지 않는것이다. 무엇이든 예외가 있는 있으니까 혹시모를 상황을 미리 대처해 둔 것이다.
위 그림을 보면서 정리를 하도록 하자
5. IP와 이더넷의 패킷 송/수신 동작
앞 포스팅은 TCP 프로토콜이 접속, 송/수신, 연결 끊기에 대해 설명을 했습니다. 이번에는 같은 계층에 있지만 한 단계 아래에 있는 IP 프로토콜이 어떻게 패킷을 상대에게 송신하는지 살펴보겠습니다. 먼저 패킷에 대해 알아봅시다
패킷은 헤더와 데이터의 두부분으로 구성합니다. 헤더는 패킷의 제어정보가 있고 데이터는 운반할 데이터가 있습니다. 다음으로 송신처와 수신처의 관계에 대해서 말하겠습니다.
송신처에 나와 수신처로 데이터를 전송 될 때 각종 장비를 거치게 됩니다. 허브, 스위치, 라우터가 패킷 중계장치가 되겠네요. 운이 좋게 하나의 장비를 통해 연결이 되면 좋겠지만 보통 그렇지 않습니다. 여러번을 거친다음 통신을 하게 됩니다. 송신처와 수신처의 관계지만 응답을 할 땐 입장이 뒤 바뀌기 때문에 명확하게 구분을 하지 않습니다. 송신처와 수신처의 기기를 묶어서 "엔드노드" 라고 말합니다.
관계를 이제 알고 있으니 세부적인 장비기능에 대해 알아볼까요? 1.라우터 / 2.허브
1. 라우터는 목적지를 확인하여 다음 라우터를 나타내고
2. 허브는 서브넷 안에서 패킷을 운반하여 다음 라우터에 도착합니다.
좀 더 자세히 이야기하면
1. IP가 목저지를 확인하여 다음 IP에 중계를 나타냄
2. 서브넷 안에 있는 이더넷이 중계 장치까지 패킷을 운반
이 될 수 있겠네요. 라우터와 허브의 개념이 부족하면 헷갈릴 수 있습니다.
서브넷이라고 하면 쉽게 내부망이라고 생각을 하시면 됩니다. 라우터는 외부망이라 생각을 하시면 됩니다.
이 모습이 TCP/IP 패킷 송/수신 과정입니다.
패킷에 대해 알았다면 앞으로 나올 이더넷에 대해도 알아둘 필요가 있습니다.
이더넷이란 MAC주소를 이용해서 통신을 하는 방법 이라고 생각하면 됩니다. MAC주소란 각 하드웨어는 고유의 번호가 있습니다. 휴대폰에도 있고 컴퓨터에도 있고, 네트워크 통신을 하기 위해선 기계에 특정 주소를 부여해서 통신이 가능하게 하는것이죠.
애플리케이션 끼리 통신을 위해선 IP주소를 애플리케이션의 데이터를 전송하기 위해선 하드웨어를 거치고 나가야하기 때문에 하드웨어간의 통신은 MAC주소를 바로 MAC주소를 이용하는 방법이 이더넷입니다!!
이더넷외에 무선LAN,ADSL,FTTH등 다양한 방식이 있지만 대부분 이더넷을 사용하고 있습니다.
전반적인 흐름과 용어를 인지 했으니 이제 세부적으로 이야기를 하겠습니다. 애플리케이션으로 데이터를 받은 TCP가 IP 담당 부분에게 패킷을 넘기면 IP 담당부은 IP헤더, MAC헤더를 만들게 됩니다. 먼저 IP헤더 과정을 보겠습니다.
IP헤더 생성에 대해 알아보도록 하자!
IP헤더의 정보는 버전, 헤더길이, 서비스유형, 전체길이, ID 정보 등등 많지만 가장 중요한 프로토콜 번호, 송신처IP주소, 수신처IP주소만 언급하겠습니다. 수신처IP주소는 우선 애플리케이션에서 정해주게 되기 때문에 간단하게 패스 그리고 송신처IP주소는 나의 PC의 정보가 필요하기 때문에 LAN어댑터의 주소로 판단을 합니다! 마지막 프로토콜 번호는 필드에는 어디에서 의뢰를 받은 것인지 나타내는 값을 설정합니다. 예로 TCP, UDP, ICMP에서인지 확인이 필요하기 때문에 사용합니다! 지금은 웹이기 때문에 TCP가 되겠네요.
MAC헤더 생성에 대해 알아보도록 하자!
이제 MAC헤더에 대해 알아보도록 합시다. MAC 헤더는 복잡한 IP헤더와 반대로 MAC헤더의 정보는 수신처 MAC주소, 송신처 MAC주소, 이더 타입 총 3가지로 구성되어 있습니다. 송신 MAC 주소는 IP와 비슷하며, 이더타입은 프로토콜 번호라고 생각하시면 됩니다. 이더타입으론 IP프로토콜, ARP프로토콜이 있겠습니다. 이제 수신 MAC 주소인데, ARP프로토콜을 이용해서 알수 있으며, ARP프로토콜은 브로드캐스트를 통해 MAC주소를 알고 한 번 알게된 MAC주소는 ARP 캐시에 저장을 해 트래픽 발생을 줄 일수 있습니다ㅇ.
LAN 어댑터를 이용해 패킷을 전기나 빛의 신호로!
ROM에는 LAN 어댑터의 고유식별 번호 MAC과 유사한 일원화 된 번호가 있다.
IP담당 부분에서 패킷을 받으면 LAN어댑터는 버퍼 메모리에 복사 -> MAC회로에 전송
MAC회로 에 대해 알아보도록 하자!
MAC회로에선 [프리앰블 + 스타트 프레임 딜리미터], FCS 가 만들어진다. 회로및 전기적 신호에 대한 이야기가 많이 나와서 간략하게 설명을 한다. 프리앰블은 송신하는 패킷의 타이밍을 알기 위함이다. 스타트 프레임딜리미터는 끝에 11비트 형식을 갖고 있기 때문에 주기적인 반복을 통해 패킷을 확인함. FCS는 오류 검출에 사용을 한다 수신측에 미리 패킷에 대해 계산을 하고 송신측으로 부터 받은 값을 비교한다.
허브를 향해 패킷 송신에 대해 알아보도록 하자!
PHY(MAU)가 먼저 MAC회로에 신호를 변화해서 보낸다.(수신일경우 / 송신 시 반대로) 그리고 MAC회로도 맨 앞부터 차례로 디지털 신호로 변환을하고 마지막에 이르면 FCS의 값을 입력 둘다 다른 값이면 오류 패킷으로 간주 후 폐기! 완벽한 경우에는 인터럽트를 걸어서 패킷을 전달한다.
- 전반적인 과정 -
가정 : 서버에 패킷이 반송이 왔을 때
패킷의 타입이 0800(TCP) 전송 -> LAN 드라이버 수신 -> LAN 드라이버가 TCP/IP 프로토콜 스택에 전송 -> IP 담당 영역은 헤더에 문제가 없는지 확인 -> 수신처 IP 주소 조사 -> 서버로 부터 IP를 확인 했을 때 자신의 것이면 패킷을 수신
만약 자신의 패킷이 아니면 ICMP 프로토콜을 이용해 아니라고 알려준다!
6. UDP 프로토콜을 이용한 송/수신 동작
UDP는 TCP에 비해 간단합니다. 단지 송신만 하면 되기 때문에 TCP의 송신 과정이랑 같고 수신과정은 없다고 생각하면 됩니다. 사용 분야는 영상, 음성 등 입니다.
chapter02 정리
클라이언트 측 프로토콜 스택과 LAN 어댑터를 통신과정을 설명했으며, 패킷을 송신하는 곳 즉 패킷을 전기 신호로 변환하여 케이블에 송출 하는 곳 까지 설명을 했습니다.
'# Study > [ 성공과 실패를 결정하는 1%의 네트워크원리 ]' 카테고리의 다른 글
[허언증/네트워크] chapter03-② (성공과 실패를 결정하는 1%의 네트워크 원리) (0) | 2020.02.17 |
---|---|
[허언증/네트워크] chapter03-① (성공과 실패를 결정하는 1%의 네트워크 원리) (0) | 2020.02.15 |
[허언증/네트워크] chapter02-② (성공과 실패를 결정하는 1%의 네트워크 원리) (0) | 2020.02.10 |
[허언증/네트워크] chapter02-① (성공과 실패를 결정하는 1%의 네트워크 원리) (0) | 2020.02.09 |
[허언증/네트워크] chapter01-② (성공과 실패를 결정하는 1%의 네트워크 원리) (0) | 2020.02.08 |