ICMP
💡 패킷을 운반할 때 발생하는 오류를 통지하거나 제어용 메시지를 통지합니다.ARP
💡 IP 주소에 대응하는 이더넷의 MAC 주소를 조사할 때 사용합니다.LAN 드라이버
💡 LAN 어댑터의 하드웨어를 제어하며, LAN 어댑터가 실제 송/수신 동작, 즉 케이블에 대해 신호를 송/수신하는 동작을 실행합니다.소켓은 통신 동작을 제어하기 위한 여러 가지 제어 정보가 기록되어 있습니다. 그 예로는, 통신 상대의 IP 주소, 포트 번호, 통신 동작의 진행 상태, 데이터 송신 후 경과 시간 등
MAC OS의 경우 터미널에 명령어 lsof
를 통해 소켓의 내용을 확인할 수 있습니다.
: 통신 상대와의 사이에 제어 정보를 주고받아 소켓에 필요한 정보를 기록하고 데이터 송/수신이 가능한 상태로 만드는 것
패킷의 맨 앞 부분에 헤더, 즉 제어 정보를 추가합니다.
connect 동작을 3 way handshake로 설명할 수 있습니다.
프로토콜 스택이 받은 데이터는 바로 송신되는 것이 아닌 송신용 버퍼 메모리 영역에 우선 저장합니다. 프로토콜 스택에 건네주는 데이터의 길이는 애플리케이션의 종류나 만드는 방법에 따라 다르기 때문에 이를 우선 버퍼 메모리에 저장한 후 송신 동작을 수행합니다. (프로토콜 스택에 전해지는 데이터를 곧바로 송신한다면 네트워크 이용 효율이 떨어지기 때문에 그렇게 수행하지 않습니다.)
MTU
MSS
MSS의 길이를 가지고 데이터 전송 여부를 판단하기도 하지만 애플리케이션의 송신 속도가 느려지는 경우 MSS에 가깝게 데이터가 저장되면 송신하기도 합니다.
시퀀스 번호
수신측에서는 시퀀스 번호를 통해 패킷의 누락 여부를 확인할 수 있습니다. 누락이 없다는 것을 확인했다면 수신측은 그 이전에 수신한 데이터와 합쳐서 데이터를 몇 번째 바이트까지 수신한 것인지 계산하고, 그 값을 TCP 헤더의 ACK 번호에 기록하여 송신측에 알려줍니다. (수신 확인 응답)
초기 3 단계는 3 way handshake 과정입니다. 클라이언트에서 시퀀스 번호의 초기값을 서버로 보내고, 서버는 초기값으로부터 ACK 번호를 산출하여 클라이언트에게 반송하는데 이때 클라이언트에 보내는 데이터에 관한 시퀀스 번호의 초기값을 함께 통지합니다. 그러면 클라이언트에서도 서버로부터 받은 시퀀스 번호로부터 ACK 번호를 산출하여 서버에 반송합니다.
윈도우 제어 방식
💡 한 패킷을 보내고 ACK 번호를 기다리는 타임아웃 시간 동안의 시간 낭비를 막기 위해 ACK 번호를 기다리지 않고 연속해서 복수의 패킷을 보내는 방법연결 끊기 과정
허브
라우터
이더넷과 같은 거대한 네트워크를 이동하기 위해서는 MAC 헤더를 통해 다음 수신지를 정하고 해당 수신지에 도착하면 새로운 MAC 헤더를 통해 다음 수신지를 정하는 것을 반복합니다.
IP 헤더
MAC 헤더
LAN 어댑터에 패킷을 전해줄 때의 모습은 0과 1로 이루어진 이진 디지털 데이터이고, 이것이 LAN 어댑터에 의해 전기나 빛의 신호 상태로 바뀌어 케이블에 송출됩니다.
IP 헤더
라우팅 테이블을 확인하여 다음 라우터를 결정합니다.
MAC OS에서는 netstat -nr
명령을 통해 라우팅 테이블을 확인할 수 있습니다.
수신처 라우터의 MAC 주소는 ARP를 통해 조사합니다. 이더넷에는 연결되어 있는 전원에게 패킷을 전달하는 브로드캐스트라는 구조가 있으며, 브로드캐스트를 활용하여 수신처 라우터의 MAC 주소를 알아냅니다. ARP에도 캐시가 존재하여 한 번 조사한 값은 캐시를 통해 조회해서 사용합니다.
IP 담당 부분에서 MAC 헤더 제조의 역할까지 수행한 후 LAN 어댑터로 데이터를 전송합니다. (이는 IP 이외의 다양한 패킷에도 LAN 어댑터가 대응할 수 있도록 하기 위함 입니다)
이더넷 패킷의 송/수신 동작은 LAN 어댑터에 의해 실행되는데, LAN 어댑터는 LAN 드라이버에 의해 제어됩니다.
이더넷
이더넷의 성질
LAN 어댑터의 구조
디지털 데이터를 전기나 빛 신호로 변환하여 네트워크의 케이블에 송출
LAN 어댑터의 초기화 (MAC 회로에 MAC 주소를 설정이 가장 중요한 동작)
프리앰블
스타트 프레임 딜리미터
FCS
LAN 어댑터의 디지털 신호 → 전기 신호 변환 과정의 자세한 내용은 생략하도록 하겠습니다.
💡 LAN 어댑터의 MAC 회로가 공통 형식의 신호를 만들고 PHY(MAU) 회로가 케이블에 송출하는 형식으로 변환하여 케이블에 송신합니다.이더넷 통신 방식은 송신 신호가 상대에게 완전히 도착했는지 확인하지 않습니다. 오류가 발생한다면 이는 TCP가 검출합니다.
LAN 어댑터의 패킷 수신 시 컴퓨터는 다른 할 일을 하고 있기 때문에 이를 알리기 위해 확장 버스 슬롯 부분에 있는 인터럽트용 신호선에 신호를 보냅니다.
LAN 드라이버는 패킷의 프로토콜 타입을 검사하여 해당 프로토콜 스택에 패킷을 전달합니다. TCP/IP의 경우 0800