묻공러
'분류 전체보기' 카테고리의 글 목록 (39 Page)

분류 전체보기

CS/[널널한 개발자] 네트워크

4-5] L4 수준에서 외울 것들 - TCP '연결'이라는 착각

TCP '연결'의 착각 질문: 파일 다운로드 중 LAN 케이블을 분리했다가 다시 연결하면 TCP 연결은 어떻게 될까? 답변: L4 수준의 연결 중 L1 수준의 연결을 잠시 끊는다면, TCP 연결은 일정시간 동안만 유지된다 Process를 개발하는 Socket Programming 용어로는 3-way handshake이 되었음에도 지속적으로 연결이 되어있는지 재확인하는데 이를 Heartbeat 확인이라고 부른다 재전송 타이머의 기본 근사 값은 대략 3초이다 하지만 대부분의 운영체제들은 1초 미만으로 보낸다 3-way handshake를 할 때 SRTT 값을 계산해서 얼마나 기다릴지 설정을 하게 된다 재전송 타이머 만료 후에도 확인 응답을 받지 못한 경우, 세그먼트를 재전송하고 RTO(Retransmissi..

CS/[널널한 개발자] 네트워크

4-4] L4 수준에서 외울 것들 - TCP, UDP 헤더형식과 게임서버 특징

TCP, UDP 헤더 형식과 게임서버 특징 - TCP 헤더 형식 TCP 헤더 형식에 Flag들을(ex. NS, SWR, ECE,...) 포함해 TCP 상태를 결정하는데 사용 혼잡 제어 필드들이 있다 추가적으로, TCP 장애 유형 1_ Packet Loss : Packet 손실 2_ Re-Transmission : 재전송 3_ Duplicated Acknowledgement : Ack가 중복된 경우 4_ Out of Order : Sequence Number가 깨진 경우, 패킷의 순서가 뒤바뀐 경우 5_ Zero Window : 수신측 버퍼에 여유 공간이 하나도 없는 경우 위와 같은 장애가 발생했을 때 이를 통제하기 위한 필드인 혼잡 제어 필드가 TCP Header에 있다 - UDP 헤더 형식 UDP는 혼..

CS/[널널한 개발자] 네트워크

4-3] L4 수준에서 외울 것들 - TCP 연결 종료 및 상태 변화

TCP 연결 종료(4-way handshaking) 및 상태 변화 클라이언트가 연결을 시작 및 종료하는 것이 일반적인 TCP 통신체계이다 연결 종료는 Application 수준에서 일어나는 것이고 여기서 Application 수준이란 Socket보다 위의 단계인 Process 수준을 의미한다 연결 종료는 위 그림처럼 [FIN + ACK, ACK 형태] * 2로 진행이 되고 Client가 FIN + ACK를 진행하고 Server가 ACK를 Server가 FIN + ACK를 진행하고 Client가 ACK를 하는 과정을 거치게 된다 또한, 그 과정을 중에 Process들은 FIN_WAIT, TIME_WAIT, CLOSE_WAIT, LAST_ACK과 같은 과정을 거치게 된다 그리고 Application Prot..

CS/[널널한 개발자] 네트워크

4-2] L4 수준에서 외울 것들 - TCP 연결과정

TCP 연결과정 (3-way handshaking) Segment 단위로 서로 정보를 주고받는데 여기서 Segment는 기존에 알고 있는 Segment와는 다르게 Payload가 없이 TCP Header와 IP Header만 있는 관리 목적의 Segment로 이동한다 1_ Client에서 Sequence Number를 랜덤으로 생성한다 그리고 그 Sequence Number를 SYN(Synchronization)으로 보낸다 2_ 그 Sequence Number를 받았다는 의미로 Server는 ACK로 그 Sequence Number에 +1을 한 것과 Server도 랜덤으로 Sequence Number 생성한 것을 SYN으로 보낸다 3_ Client가 Server에게 받은 값에 +1 ACK를 보내면서 끝난..

CS/[널널한 개발자] 네트워크

4-1] L4 수준에서 외울 것들 - TCP, UDP 개요

1) TCP, UDP 개요 - 연결 TCP에만 연결(Connection, Session, Circuit)의 개념이 있다 여기서 연결은 Virtual 측면을 의미하며 Virtual Circuit이라고도 불린다 연결은 결과적으로 순서번호로 구현된다 연결은 '상태(전이)' 개념을 동반한다 TCP와 UDP의 큰 차이는 Application 수준에서 발생하는 오류중 하나인 Zero Window가 발생할 때, TCP는 트래픽을 멈추게 되고 UDP는 신경 쓰지 않고 트래픽을 계속 보내버린다 - 다시 짚고 가는 식별자와 단위 - 다시 짚고가는 Port 번호의 다양한 의미 1_ L2 Interface 네트워크 스위치 수준에서 Interface 번호를 Port 번호라고 한다 2_ L4 수준에서 방화벽과 네트워크 서비스 관..

CS/[널널한 개발자] 네트워크

3-5] L3 수준에서 외울 것들 - TTL, 단편화, DHCP, ARP, Ping

10) TTL과 단편화 TTL은 Time To Live의 약자이며 Packet이 Dst 까지 도착하지 못하고 실패하는 경우, 떠도는 Packet이 발생하기 때문에 이를 해결하고 관리하기위해 등장 Router를 지날때 마다 Hop을 -1 시키며 Hop이 0이 되면 Paket을 소멸시켜버린다 단편화는 (Router의) MTU 크기 차이로 발생한다 Data를 나누고 기존의 IP Header에서 offset과 같은 특정 부분을 수정한 Header를 나머지 Data에 붙여서 단편화를 진행한다 단편의 조립은 주로 수신측 Host에서 이루어진다 단편화가 발생하지 않기 위해서, 처음부터 MTU의 최소 사이즈로 보내는 경우가 일반적이다 그리고 실제로 MTU가 1500bytes보다 작은 크기인 경우는 거의 없으며 단편화가..

CS/[널널한 개발자] 네트워크

3-4] L3 수준에서 외울 것들 - Broadcast IP, Host IP

8) Broadcast IP주소 L3 IP Packet의 Host ID가 1111로 구성되어 있다면 Broadcast가 활성화된다 ex. 192.168.0.255 (= 1100 0000 / 1010 1000 / 0000 0000 / 1111 1111) 그리고 활성화된 Packet의 MAC 주소에도 FF가 포함되어 있다 Broadcast는 효율이 떨어지고 네트워크 장비(ex. Distribution Switch)의 부하가 발생하기에 최소화하는 것이 중요하며 Broadcast의 범위를 지정하기도 한다 Multicast는 Broadcast 처럼 전체에게 전달하지만, 전달받을 것들을 그룹화한다는 점이 차이점이다 추가적으로, 네트워크에서 쓸 수 없는 IP 주소로는 1_ Host ID가 0인 경우 0000 0000..

CS/[널널한 개발자] 네트워크

3-3] L3 수준에서 외울 것들 - IP 헤더형식, 서브넷 마스크와 CIDR

6) IP 헤더 형식 MTU는 대략 1500 bytes이고 32bit이다 MTU는 IP Header(대략 20bytes)와 Payload(대략 1480 bytes)로 구성이 되어있다 Version: 버전이 IPv4이기 때문에 4 IHL: Internet Header Length로 IP Header의 길이를 의미하며 일반적으로 5 (5 * 4 bytes = 20 bytes) Total length: 패킷의 길이로 16비트로 표현되고 2^16 = 64KB로 헤더 포함해서 IP Packet의 최대 크기는 이론상 64KB Fragment offset: Packet의 MTU가 작은 네트워크를 만났을 때, Packet을 단편화해야하는데 그 offset을 의미 TTL: Time To Live로 유통 과정에서 TTL ..

CS/[널널한 개발자] 네트워크

3-2] L3 수준에서 외울 것들 - Packet의 이동과정과 계층별 데이터 단위

4) 패킷의 생성과 전달 Process 간 패킷의 전달 과정은 마치 택배 시스템과 유사하다 따라서, Packet을 박스 하나라고 한다면 프로세스의 집은 Host 프로세스의 현관은 Interface 기사님은 Gateway이며 물류 허브가 Router이고 물류체계 시스템인 Routing Table에 따라 분류하고 처리하는 작업이 Routing이고 IPv4 Dst를 통해 목적지까지 이동하면 마지막으로 받는 이의 이름과 같은 Port 번호를 통해 최종적으로 전달되는 과정과 같다 Process에서 Data를 Socket에 Send 하는데 여기서 Socket이란 Kernel에 있는 TCP/IP를 추상화한 Interface로 파일이다 이렇게 전달된 Data에 여러 헤더들이 Encapsulation되어서 최종적으로 L..

CS/[널널한 개발자] 네트워크

3-1] L3 수준에서 외울 것들 - L3 IPv4 Packet

1) IPv4 주소의 기본 구조 L2 MAC 주소의 경우는 48bit이고 L3 IPv4 주소의 경우는 32bit (= 8bit * 4)이다 만약 1111 1111의 경우로 구성이 되어있다면 Broadcast일 수 있다 IPv4 주소는 24bit의 Network ID와 8bit의 Host ID로 구성이 되어있으며 예를 들어, Network ID는 서울시 강남구 역삼동을 의미한다고 하면 Host ID는 번지수를 의미한다고 생각하면 된다 2) L3 IP Packet Packet은 단위 데이터이고 Packet이라는 말은 L3 IP Packet이라고 한 번에 붙여서 외우자 Packet은 Header와 Payload로 나눠져 있으며 Header에는 Src, Dst의 주소가 포함이 되어있고 Payload에는 전송될 ..