응용계층에 있는 네트워크 바이너리를 가져와서 서버에 접속한다.
응용계층과 전송계층 사이에 소켓이 들어간다.
주로 안드로이드 앱을 작업할때에는 소켓만 건들면 된다.
위와 같이 TCP와 UDP를 socket으로 연결해준다.
*TCP는 속도는 느리지만 오류 체크를 많이해서 신뢰성이 높다 UDP는 속도가 빠르지만 오류 체크는 안함, 신뢰성이 낮다.
TCP와 UDP의 특징
TCP = 빨대 있음.
1. 연결 지향성 프로토콜 = 연결 수립-데이터 전송-연결 종료의 3단계로 가상의 연결 기반 서비스
둘중에 하나만 연결 끊으면 (close함수) 통신이 끊김.
비 연결 지향적 프로토콜 = 길을 수립, 만들지 않고 패킷에 목적 주소가 있으면, 그때그때 연결 해서 전송한다.
HTTP = 비 연결 지향적
2. 신뢰성 = 데이터가 믿을만 한지 오류 체크를 말한다. 무결성 데이터를 말한다. 주고 받는 패킷의 무결성 제공
패키지를 보낼때, 오류가 생겼나 체크하고, 상대방이 패키지 누락이 되면 *ACK 신호를 보낸다.
오류 상황
. 손상 세그먼트
. 손실 세그먼트
. 순서가 어긋난 세그먼트
. 중복 세그먼트
오류 발견과 정정
. Checksum
. 확인응답
. 시간초과
3. 속도 = 느림.
UDP = 빨대 없음.
1. 비 연결 지향성 프로토콜 =
2. 신뢰성 떨어짐 = 상대방의 아크 신호도 없고 데이터 손실이 있을수 있기 때문이다.
3. 속도가 빠르다 = TCP의 오버헤드를 다 빼서 빠르다.
자세한 내용은 아래 총 정리 내용을 참고 하도록 하자.
192. 160. 13. 3
소규모. 중규모. 대규모. 대규모 (컴퓨터 대수가 많은 만큼 규모가 다름.)
- netID와 HostID의 차이점
아래 사진과 같이 netID로 12, 13처럼 각 동네, 내용, 네트워크 넷을 구성해준다. hostID는 해당 동네 안에있는 집 주소 를 말한다. (참고 예시임 자세한 내용은 아래 총 정리를 참고하자)
그래서 규모를 결정하는 방법은 위를 참조하여 아래 사진 처럼 결정해준다.
classA는 네트워크를 256개를 만들 수 있다. 호스트는 2의 24승개를 만들수 있다. (대규모)
classB는 네크워크그룹을 2의 16승, 각 그룹의 호스트 또한 2의 16승개를 만들 수 있다. (중규모)
classC는 네크워크그룹을 2의 24승, 각 그룹의 호스트는 2의 8승개 (256개)를 만들 수 있다. (소규모)
서브넷 마스킹을 사용해서 같은 subnet인지 다른 subnet인지 알수 있다. 트레픽 관리 할때 작게 관리하면 좋기 때문이다
subnet을 구축하는 방법
아래사진과 같이 hostid에서 몇 개의 바이너리 값을 사용해서 일부 비트를 서브넷아이디를 구축할 수 있다.
한 그룹당 256개의 비트를 갖고 있는데 소규모로 나눈다는 의미를 갖고있다.
위와같이 자르게 되면 아이피는
255.255.255.192(255-64) 또는 255.255.255.192(128+64)이와같이 된다
프로세서와 프로세스
프로세서는 CPU를 말하고,
프로세스는
1. 실행중인 프로그램 = 프로그램 코드를 메모리에 얹고, 각종 자원을 할당한다. 각종 레지스트 정보를 담는다.
2. 작업단위 = task는 개념적인 말이고, 프로세스, 스레드로 구현할 건지 os에 따라 선택이 다름.
(task = 멀티태스킹에서 하나의 프로그램을 쪼개는 작업 단위를 말한다.) > 프로세스와 쓰레드로 구현 할 수 있다.
두개다 사용해서 구현도 가능하다.
리눅스의 기본은 프로세스이다. 요즘에는 프로세스보다 쓰레드를 더 많이 사용해서 구현한다.
프로세스와 쓰레드 특징의 차이점
1. 프로세스 = 메모리 공유 안함. IPC inter process c... (shared memory, message Q, ... 이 있다.) task작업단위를 말한다.
2. 쓰레드 = 메모리 공유한다. (전역변수영역, 힙에 저장한다.) 동기화 처리를 꼭 해줘야 한다.
스레드를 사용하면 자원 관리하는데 효율적이다.
작업창에서 작업하는 내용은 인터프리터언어와 컴파일러 두개다 사용한다.
(c++보다 자바또는 파이썬이 느린이유는, 애초에 코딩작업을 해주기 때문이다. 컴파일 해주기 때문이다.)
~.exe는 바이너리로 분석한 내용이 들어가있다.
exe를 실행하면 아래와 같이 ram에 복사가 된다.
(* 프로토콜 = 통신계약, 통신규약을 말한다. )
(* 소켓 = 오늘날 컴퓨터 간 통신의 대부분은 인터넷 프로토콜을 기반으로 하고 있으므로, 대부분의 네트워크 소켓은 인터넷 소켓이다. 네트워크 통신을 위한 프로그램들은 소켓을 생성하고, 이 소켓을 통해서 서로 데이터를 교환한다. 소켓은 RFC 147에 기술사항이 정의되어 있다.
(전기와 전구를 연결해주는 역할을 한다고 생각하면 된다.))
(* 무결성 = 데이터 무결성(영어: data integrity)은 컴퓨팅 분야에서 완전한 수명 주기를 거치며 데이터의 정확성과 일관성을 유지하고 보증하는 것을 가리키며 데이터베이스나 RDBMS 시스템의 중요한 기능이다.)
(* ACK 신호 = 상대방이 패킷을 정상 받으면 보내는 신호 )
참고 문헌 및 자료
서브넷 마스킹 = limkydev.tistory.com/166
인터프리터와 컴파일러의 차이점 = m.blog.naver.com/ehcibear314/221228200531
TCP와 UDP의 차이점 = mangkyu.tistory.com/15
TCP = blog.skby.net/tcp-transmission-control-protocol/
* 총정리 내용 *
1. OSI 7계층 TCP/IP Protocol
Application --------------------------- Application(ftp, telnet, dns...)
Presentation
Session
Transpot ------------------------------ Transport(TCP, UDP)
Network ------------------------------- Internet(IP, ARP, RARP)
Data Link ----------------------------- Network Interface
Physical
2. TCP
-연결 지향성 프로토콜 / 신뢰성(주고 받는 패킷의 무결성 제공) / 속도는 느리다.
ACK신호 = 상대방이 패킷을 정상 받으면 보내는 신호
프로세스간 통신
연결성립과 연결 종료
신뢰성 있는 Packet전송
연속되는 Packet 전송
Data Overflow 방지를 위한 Flow Control
Error Control
3. TCP Error Control
- TCP는 오류제어를 통하여 신뢰성을 제공한다.
- 오류 감지 및 정정을 위한 매커니즘 제공
오류 상황
. 손상 세그먼트
. 손실 세그먼트
. 순서가 어긋난 세그먼트
. 중복 세그먼트
오류 발견과 정정
. Checksum
. 확인응답
. 시간초과
4. UDP(User Datagram Protocol)
- 비 연결 지향성 프로토콜
- Port no에 의한 프로세스 구분
- 상위 애플리케이션에서 reliability, message loss, duplication, delay ,
loss of connectivity를 체크하고 관리
- TCP의 오버헤드를 피하고자 하는 경우
- broadcast 및 multicast 사용시
5. Internet Layer Protocol
- 라우팅
- 상위 레이어에 단 하나의 네트워크 인터페이스 제공
IP(Internet Protocol)
ICMP(Internet Control Message Protocol)
ARP(Address Resolution Protocol)
RARP(Reverse Address Resolution Protocol)
*IP
-OSI 네트워크 계층에서 호스트의 주소지정과 패킷 분할 및 조립 기능을 담당한다.
-IP는 비신뢰성(unreliability)과 비연결성(connectionlessness)이 특징.
단편화(Fragmentation)
- 데이타그램의 크기 조절기능(확장성)
- 수신측에서는 재조립(reassemble)
- 헤더에 같은 값의 Identification
- MTU(Maximum Transfer Unit)의 길이에 따라 나누어 보냄
*ARP(Address Resolution Protocol)
- IP Address를 MAC Address로 변환해주는 Protocol
- ARP는 Local Broadcasting에 의존한다.
- 한번 찾은 Address는 ARP Cache에 일정기간 보관
*RARP(Reverse Address Resolution Protocol)
- MAC Address로부터 IP Address로의 변환
- 네트워크는 RARP 서버를 포함해야 한다.
*ICMP(Internet Control Message Protocol)
- 인터넷상의 라우터 및 호스트가 전송상의 에러를 보고하고,
노드간 통신에 있어 제어를 위한 메시지를 보고하게 할 목적으로
만들어진 프로토콜
6. 네트워크 주소
Address Class NetID : HostID
CLASS A : 1 ~ 126, 1:3
CLASS B : 128 ~ 191 2:2
CLASS C : 192 ~ 223 3:1
CLASS D : 224 ~ 239 Multicast Address
CLASS E : 240 ~ 255 reserved
Subnet Mask의 이용
- 같은 subnet인지
- 같은 네트웍의 다른 subnet인지
- 다른 네트웍인지를 알 수 있다
ex> 255.0.0.0 (A)
255.255.0.0 (B)
255.255.255.0 (C)
목적
- 할당 받은 IP Address를 효과적으로 사용
- 네트웍 Traffic 관리 및 제어
- 네트웍 성능의 최적화
- 관리의 간편성
방법
- hostID의 일부를 netID로 사용
ex>
IP Address(131.108.2.160)의 Subnet Mask :
255.255.0.0
255.255.255.0
Network Address = 192.168.10.0 , SubnetMask = 255.255.255.192
6. IP Routing
- 한 네트웍에서 다른 네트웍으로 Packet을 이동시키는 과정과
네트웍 안의 호스트에게 Packet을 배달하는 과정
Direct Delivery
- 패킷의 발신지와 목적지가 동일 네트워크에 존재
- 최종 라우터와 목적지 호스트 사이에 수행
- 목적지 주소에서 netid를 추출하여 네트워크 주소와 비교
- 주소가 같으면 직접 전달이 수행
Indirect Delivery
- 발신지와 목적지가 다른 네트웍인 경우
- 여러 라우터를 경유하여 전달
- 라우팅 테이블에서 다음 라우터의 IP주소를 찾는다.
Routing Table
- 패킷 전송의 경로를 판단하기 위한 기준치들의 모음
Routing Metric
- route(경로)들을 서로 비교하는데 사용되는 비용 측정치
8. 소켓
- 1982년 BSD(Berkeley Software Distribution) UNIX 4.1에서 처음 소개
- 1986년 BSD UNIX 4.3에서 개정된 것이 널리 쓰임
- 소프트웨어로 작성된 통신의 접속점
- 응용프로그램이 TCP/IP를 이용 할 수 있는 창구 역할
- 응용 프로그램은 소켓을 이용하여 통신망에 데이터를 송.수신
구성
- 소켓 생성시 file descriptor와 같은 기능을 하는 socket descriptor 리턴
- 파일과 소켓이 descriptor table을 공유
- 한 프로세스에서 descriptor는 중복되지 않는다.
'workSpace > NETWORK' 카테고리의 다른 글
adb 태블릿 맥 연동 방법 (0) | 2022.06.09 |
---|---|
[라즈베리파이] sd 카드에 라즈베리 PI OS 설치하기 (0) | 2021.02.24 |