sender가 protocol을 따라 medium을 통해 message를 보내면, receiver는 medium을 통해 받은 message를 protocol을 통해 처리한다.
Mutiple-access protocol은 Random-access protocol, Controlled-access protocol, Channelization protocol로 분류됨.
Random-access protocol 중 초고속 네트워크, 무선 인터넷에서 가장 많이 사용되는 방식이 CSMA/CD와 CSMA/CA이다.
유선에서 가장 많이 사용되는 방식이 CSMA/CD, 무선에서 가장 많이 사용되는 방식이 CSMA/CA이다.
즉, 충돌이 발생하면 잠시 데이터 전송을 중단하고, 일정 시간 내에 난수적으로 보내는 시간을 결정하여 동시다발적으로 충돌하지 않도록 시간 간격을 띄우고 다시 액세스할 수 있도록 한다.
광이라는 빠른 미디움이 생기고, 케이블의 가격이 낮아짐에 따라 한 줄에 여러 개의 장치를 연결하지 않게 된다.
따라서 유선일 경우, CSMA/CD에 의한 에러 검출 및 복구 작업이 유명무실해진다.
HTTP3에서는 TCP 대신 에러를 검출하지 않는 UDP를 http 밑에 넣는다. (컴퓨터 사이에서 물리적으로 에러가 발생할 확률이 매우 낮기 때문) -> 데이터 링크 계층과 전송 계층에서의 에러 검출 및 복구 작업을 줄임.
-> 에러 검출 및 복구 작업이 줄어들어 데이터 전송 속도가 빨라짐.
CSMA/CD에서는 충돌이 검출되면 Jamming signal(이상한 신호를 보내서 확실한 에러가 날 수 있도록 하는 것)을 보내서 확실하게 에러를 발생시킴.
통신은 몇 번 시도 했다가 실패하면 버린다. 따라서 1, 2계층 레이어가 데이터를 전송하다가 버릴 수 있기 대문에 신뢰성 있는 소프트웨어를 짜기 위해서는 상위 계층에서 보강해야 한다.
무선 주파수를 미디움으로 사용하고, 무선 랜은 방송의 특성 상 메시지를 다른 컴퓨터에서 받을 수 있기 때문에 암호화를 해야 한다.
A와 B가 있을 때 A는 수신자를 B로 하여 RTS를 보낸다. B는 RTS를 통해 A가 통신을 하고 싶어함을 알고 CTS를 보낸다. 단, 이 때의 CTS는 “지금부터 A와 통신을 하겠다”는 의미를 담아 모든 컴퓨터에게 보낸다. 이 때 같은 방에 있는 C와 D는 이를 보고 NAV(Network Allocation Vector)로 들어간다.(A와 B가 통신할 것이니 가만히 있겠다는 의미로, 충돌을 회피하기 위해서이다)
A가 B에게 데이터를 모두 보내고 나면, B는 데이터를 잘 받았다는 의미로 모든 컴퓨터가 볼 수 있는 ACK를 보낸다. ACK를 보고 나면 (혹은 데이터를 보내기로 한 뒤로 오랜 시간이 지났을 경우), C와 D도 다시 데이터를 보낼 수 있는 상태로 돌아온다.
B와 A가 연결, C와 A가 연결되어 있고, B와 C 사이에 벽이 있어서 A와 B 사이의 상태에 대한 정보가 없는 경우
A가 B의 연결 범위 내에 있고, A가 C의 연결 범위 내에 있지만, B와 C는 서로 연결 범위에 있지 않은 경우
즉, RTS, CTS, ACK 중 하나라도 듣지 못한 애가 무선 주파수에 개입을 하려고 하는 상황이 발생하면 충돌이 생긴다. 따라서 무선에서의 충돌이 발생할 수 있다.
무선랜 또는 블루투스는 사용자가 많아지면 성능이 기하급수적으로 떨어지다가 성능 제로 상태가 된다.
= 통신 불능 상태가 된다.
통신(1, 2계층)은 할 때까지 해보다가(Best Effort) 안 되면 포기한다는 점을 기억하자!
OSI 1, 2계층에 속하는 다른 기술(블루투스, 이동 통신)도 동시 사용자가 많을 시 충돌로 인해 성능이 저하하거나 손실이 발생할 수 있다.
따라서 1, 2계층의 특성을 이해하는 것은 서비스의 품질 보장을 위해 필요하다.
Network Layer에서 하는 중요한 일 중 하나로, 패킷을 만드는 것이다.
네트워크 계층은 보내는 컴퓨터의 네트워크 주소(ip 프로토콜을 사용하면 source의 Ip 주소)와 받는 컴퓨터의 네트워크 주소(destination의 ip 주소)를 PDU에 넣는다.
Destination 주소를 보고 목적지까지 도달할 수 있도록 해주는 것이다.
라우터에서는 Routing, 스위치나 허브에서는 Forwarding이라고 한다.
IP network layer에서는 여러 줄이 연결되어 있는 라우터에서 보내는 순서대로 전달받지 않을 수 있다.(보내는 순서와 받는 순서가 다를 수 있으며, 패킷 단위로 전달하게 된다)
TCP - 보내는 순서와 받는 순서가 같음. UDP - 보내는 순서와 받는 순서가 다름.
따라서 순서가 중요한지, 중요하지 않은 지를 미리 판단할 줄 알아야 한다.
라우터는 특정 포트로 들어온 패킷의 목적지 주소를 보고 보낼 포트를 결정하는데, 이때 판단할 근거로 사용되는 것이 Forwarding table(Routing table)이다.
Ex)
Destination address를 보고 그에 해당하는 output interface(줄이 꽂혀있는 포트)를 결정하여 패킷을 전달한다.
이 테이블은 빠른 LAN에 저장한다.
Network layer의 가장 대표적인 소프트웨어로, Network Layer에서 IP라고 이름이 지어졌을 때 해야할 일을 정한 것이다.
Network layer에는 IP와 ARP, ICMP, IGMP가 존재한다.
Physical layer와 Data-link layer가 무엇이든지 IP가 Network layer에 올라와있으면 인터넷 기술 기반으로 동작한다.
TCP - 에러 검출 및 복구, 순서대로 재정렬 / UDP - TCP에서 하는 역할이 필요하지 않을 때 사용
Network layer는 하드웨어적으로 컴퓨터 또는 줄까지 찾아가고, Transport layer는 프로세스를 찾는 행위를 한다.
IPv4 Address - IP 프로토콜에서 가장 많이 사용하는 버전
주소를 32 비트(4 바이트)로 표현한다. 이 주소를 기반으로 컴퓨터 또는 물리적인 장치를 찾아간다.
IPv4 = Prefix (n bits) + Suffix ((32 - n) bits)로 구성
Prefix = “네트워크 주소”라고 부름. (2 bytes 이상의 길이). 외부에서 내부 망의 컴퓨터들에 대한 정보를 알 필요는 없기 때문에 외부에서 구분 가능한 수준의 주소.
Suffix = “호스트 주소”라고 부름. 네크워크 주소를 제외한 나머지 주소. 내부 망에서의 주소를 의미.
외부의 라우터들은 Prefix를 보고 전달하며, 내부 라우터들은 Suffix를 보고 전달한다.
네트워크 주소를 할당하는 방법 - 이를 주관하는 위원회에서 할당
네트워크 주소가 짧을수록 할당핧 수 있는 호스트 주소가 많아진다.
네트워크 주소 표기 방식(Slash notation) : byte.byte.byte.byte / n (Prefix 길이)
Suffix 길이 = (32 - n) bits
예) 12.24.76.8/8
도메인 이름
예) https://www.domain-name.com
도메인 이름과 IP 주소를 연결하여 도메인 이름을 IP 주소로 바꿔주는 시스템(서버)
IP 주소를 할당한 후, 일정 시간이 지나면 다시 회수하는 방식. 주소 Private IP 대상으로 사용된다.
Public IP : 외부 망에서 유의미한 IP 주소. 2^32 개 중에서 할당 받은 고유한 주소.
Private IP : 내부 망에서만 유의미한 IP 주소. Public IP를 재사용하기 위해 사용.
NAT : Network Address Translation - Private network 주소를 Public network 주소로 바꾸는 것
PAT : Port Address Translation - 4계층의 주소를 바꾸는 것