[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

💻 CS/네트워크 20

[Network] TCP 프로토콜

TCP 프로토콜 기본특징 연결지향성 전송 제어 프로토콜 (Transmission Control Protocol, TCP) 인터넷에 연결된 컴퓨터에서 실행되는 프로그램 간 통신을 안정적으로, 순서대로, 에러없이 교환할 수 있음. (패킷 내용으로 이를 확인할 수 있기 때문) 이러한 TCP의 안정성을 필요로 하지 않을 때 UDP를 사용하는 것. TCP는 UDP보다 안정성을 보장하는 만큼 속도가 느리다는 단점이 있다. 3Way Hnadshake : 클라이언트가 서버에게 요청 패킷을 보내고(SYN), 서버는 클라이언트의 요청을 받아들이는 패킷을 보내며(SYN+ACK), 최종적으로 클라이언트가 이를 수락하는 패킷까지 보내는(ACK) 총체의 과정. 연결 수립을 위한 과정이다. (cf. 최근엔 최적화가 되어서 클라이언..

[Network] UDP 프로토콜

UDP 프로토콜 비연결지향형이라고 한다. (안전한 연결을 지향하지 않는다.) 단순히 포트를 구분하고, 체크썸을 확인하는 정도의 기능만 수행 사용자 데이터그램 프로토콜 (User Datagram Protocol, UDP)은 유니버설 데이터그램 프로토콜 (Universal Datagram Protocol)이라고도 함. 전송방식이 매우 단순해 서비스의 신뢰성이 낮고, 도착순서가 바뀌거나 중복되거나 통보없이 누락될 수 있음. 일방적으로 오류의 검사와 수정이 필요없는 프로그램에서 수행할 것으로 가정함. UDP 프로토콜 구조 Source Port : 출발지 포트번호 Destination Port : 목적지 포트번호 Length : 헤더와 페이로드를 포함한 총 길이 Checksum : 송신된 자료의 무결성을 보호하는..

[Network] 포트

4계층 프로토콜 전송 계층이라고 부름 송신자의 프로세스와 수신자의 프로세스를 연결하는 통신 서비스 제공 연결 지향 데이터 스트림 지원, 신뢰성, 흐름 제어, 다중화와 같은 편리한 서비스 제공 연결 지향 전송 방식을 사용하는 전송 제어 프로토콜(TCP) 단순한 전송에 사용되는 사용자 데이터그램 프로토콜(UDP) TCP / UDP의 프로토콜 구조에 대해서는 따로 정리 포트 번호 특정 프로세스와 하나의 프로세스가 통신을 하기 위해 사용 하나의 포트는 하나의 프로세스만 사용 가능 하나의 프로세스가 여러 개의 포트를 사용할 수는 있음 포트 번호는 일반적인 번호가 정해져있지만 반드시 지켜야하는 것은 아님 대표적으로 3가지로 분류된다. Well-Known 포트 서비스 이름 포트 번호 FTP 20, 21번 SSH 22..

[Network] IPv4 프로토콜 / ICMP 프로토콜

IPv4 프로토콜 네트워크 상 데이터를 교환하기 위한 프로토콜 데이터가 정확하게 전달되는 것을 보장하지는 않는다. (4계층 TCP에서 보완) 중복된 패킷을 전달하거나 패킷 순서를 잘못 전달할 가능성 존재 (악의적으로 이용시 Dos 공격) IPv4 프로토콜 구조 Version : IP 프로토콜 버전 (4버전 표기, 6버전도 있지만 구조자체가 다르다) HLEN : Header Length. '헤더길이/4'의 값이 들어간다. (일반적으로 5) Type of Service : 데이터의 중요도를 나타내는 파트로 예전엔 사용했지만 현재는 사용하지 않는다. (따라서 0) Total Length : 페이로드까지 합쳐진 전체 길이 Identification : 각각의 조각화된 데이터들이 하나의 데이터임을 ..

[Network] ARP

ARP 프로토콜 ARP가 하는 일 같은 네트워크 대역에서 통신을 하기 위해 필요한 MAC주소를 IP주소를 이용해 알아오는 프로토콜 따라서 보안 상 중요하게 여겨진다. ARP의 구조 Hardware type : 2계층에서 사용하는 프로토콜의 타입 (이더넷 : 0x0001) Protocol type : 'Protocol Address'의 타입 (IPv4 : 0x0800) Harware address length : 'Harware Address'의 길이 (MAC주소의 길이 : 0x06) Protocol address length : 'Protocol Address'의 길이 (주로 IPv4주소의 길이 : 0x04) Opcode : 어떻게 동작하는지 나타내는 코드 (요청(0x0001)인지 응답(0x0002)인지..

[Network] IP주소

3계층의 기능 3계층은 서로 다른 LAN 대역(네트워크 대역)들을 연결시켜준다. 3계층의 대표적 장비인 라우터가 필요하다. 즉, 멀리 떨어진 곳에 존재하는 네트워크까지 어떻게 데이터를 전달할지 제어 (발신에서 착신까지의 패킷경로를 제어) 이 때 필요한 것이 IP주소이다. IPv4 주소 : 대표적인 3계층 프로토콜로, WAN에서 통신할 때 사용한다. 현재 PC에 할당된 IP주소이며 통신을 위해서는 서브넷 마스크와 게이트웨이를 필요로 한다. IPv6와는 구성 자체가 다르다. cf. 그 외에도 ARP(IP주소를 이용해 MAC주소를 알아올 수 있다), ICMP(서로가 통신되었는지 확인할 때 사용)가 대표적인 3계층 프로토콜이다. 일반적인 IP주소 Classful IP 주소 클래스 네트워크 구분 시작 주소 마지막..

[Network] Ethernet 프로토콜

2계층에서 하는 일 같은 네트워크 대역(LAN대역)에 존재하는 장비들 중 어떤 장비가 어떤 장비에게 전달하는지 제어 (흐름제어) 전달하는 데이터에 오류가 있는지 없는지 제어 (오류제어) 다른 네트워크와 통신할 때는 항상 3계층의 개입이 필요하다. 2계층에서 사용하는 주소 MAC주소 : 2계층에서 사용하는 주소체계로 물리적인 주소를 뜻한다. 즉, LAN에서 통신할 때 사용한다. 총 12개의 16진수로 구성되어 있으며, OUI(IEEE에서 부여하는 제조회사 식별 ID)와 고유번호로 구성되어 있다. (ex.6C:29:95:04:EB:A1) 2계층 프로토콜 (Ethernet 프로토콜) Preamble : Frame의 시작을 알려주기 위한 정보 SFD : Frame 시작 구분자 Destination Address..

[Network] 네트워크 모델

TCP&IP 모델 현재 인터넷에서 컴퓨터들이 서로 정보를 주고받는데 쓰이는 통신 규약(프로토콜)의 모음 1980년대에 공개되어 현재까지도 사용되고 있는 네트워크 모델이다. 4계층 : 응용 3계층 : 전송 2계층 : 네트워크 1계층 : 네트워크 인터페이스 OSI 7 계층 ISO에서 표준으로 지정한 모델로, 데이터 자체의 흐름을 구간별로 나눠놓은 네트워크 모델이다. 7계층 : 응용, 여러가지 서비스를 제공하는 실질적인 프로그램, 사용자 인터페이스 (cf. http) 6계층 : 표현, 데이터를 어떤 형식으로 전달할지 정하는 계층 ex) 그림파일(jpeg,png), 압축파일(zip, tar.gz), 일반 텍스트 5계층 : 세션, 논리적인 연결을 정의하는 계층, 네트워크 장치들간의 연결 설정의 유지 동기화 등을 ..

[Network] 네트워크의 분류

네트워크 물리적으로 떨어져있는 여러 시스템을 연결하여서 데이터를 주고 받을 수 있도록 하는 것 네트워크 분류 - 크기 LAN : Local Area Network, 하나의 장비(스위치)에 연결되어 있는 여러 시스템이 속한 네트워크 WAN : Wide Area Network, 하나 이상의 LAN으로 구성된 네트워크 MAN : Metropolice Area Network, 하나의 도시의 네트워크 네트워크 분류 - 구성 방법 Star형 : 중앙에 있는 네트워크 장비를 통해 모두 연결된 형태, 중앙장비가 고장나면 모든 시스템들이 통신 불가능함, 2계층, 스위치 장비를 통해 LAN 대역을 구성 Mesh형 : 모든 시스템들이 각각 개별적으로 연결됨, 비용이 많이 든다. 3계층, 라우터 장비를 통해 WAN 대역을 구..

[Network] Port와 Port forwarding

Port Port? 네트워크를 통해 데이터를 주고받는 프로세스를 식별하기 위해 호스트 내부적으로 프로세스가 할당받는 고유한 값 naver에 접속할 때 naver.com:80은 접속되지만 naver.com:888같은 다른 숫자는 접속이 안됨을 확인할 수 있다. 이는 web server는 80이라는 숫자의 port를 사용하기 때문이다. ssh도 마찬가지로 22번 port로는 접속이 되지만, 다른 숫자로는 접속이 되지 않는다. ssh가 22라는 숫자의 port를 사용하기 때문이다. 모든 컴퓨터에는 이러한 'port'가 존재한다. 0~1024번 port는 인프라역할을 하는 유명한 통신시스템이 자리하고, 그 이후의 port는 특정 프로그램들에 대해 사용할 수 있다. 총 65536개의 port num..