묻공러
'CS/[널널한 개발자] 네트워크' 카테고리의 글 목록

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

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

5-3] 웹을 이루는 핵심기술 - 굵고 짧게 살펴보는 HTTP

HTTP HTTP는 HTML 문서를 전송받기 위해 만들어진 L7 응용프로그램 계층 통신 프로토콜이다 기본적으로 클라이언트의 요청에 대응하는 응답형식으로 작동한다 헤더는 일반 헤더, 요청 헤더, 응답 헤더, 엔티티 헤더로 분류된다 요청에 사용되는 메서드는 주로 GET, POST이다 L5이상의 경우는 Socket 통신을 하며 Stream 데이터로 전송된다 Stream 데이터의 끝을 지정하는 것이 HTTP에 포함되어 있으며 앞서 배운 Protocol은 16진수였지만 HTTP의 Header와 Payload는 문자열로 구성되어 있어 가독성이 편하다 HTTP의 응답코드 HTTP method POST는 File을 업로드하거나 ID/PWD를 통해 로그인 하는 경우 사용된다 PUT은 Resource를 새로 업로드 DEL..

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

5-2] 웹을 이루는 핵심기술 - HTML과 HTTP, URL과 URI

HTML과 HTTP HTML과 HTTP 웹 기술의 본질은 HTML이라는 HTML 문서를 전달하기 위해 HTTP가 만들어졌다 여러 문서를 보기 좋게 정보 시스템 구축하는 것이 시초였다 URL과 URI Uniform Resource Locator Uniform Resource Identifier URL ⊂ URI Resource: 파일 Locator: 위치 Identifier: 식별자 ex. http://www.text.co.kr/course.do?cmd=searh&search keyword=Test 위와 같은 주소에서 www.text.co.kr 이 부분은 host를 식별하고 그 뒤에 나머지 부분인 /course.do?cmd=searh&search keyword=Test 부분은 경로와 관련된 부분이고 JAV..

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

5-1] 웹을 이루는 핵심기술 - DNS

DNS 지금까지 배운 L1~L4는 Infrastructure라고 할 수 있고 Application 수준은 인터넷을 이루고 있는 다양한 Service들을 의미하는데 Application 수준에서 그러한 Service 중에서 Infrastructure에 해당하는 것들이 있는데 그중 대표적인 것이 DNS(Domain Name Service)이다 도메인 이름으로 IPv4 주소 결과를 알려주는 데이터베이스 서비스이고 분산 구조형 데이터베이스로 트리 구조의 도메인 네임 체계를 가지고 있다 ex. www.naver.com > 3.3.3.3 www.naver.com은 URL, URI라고 하며 www를 Host Name naver.com을 Domain Name이라고 한다 위 그림처럼 프로세스에서 자신의 DNS에게 www..

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..